WebフォームとPHPスクリプトを使用してユーザーがサーバーにファイルをアップロードすると、サーバー上のディスクアクセスは、Webサーバーが実行されているユーザーIDで行われます(通常、nobody、www-data、apache、_httpdまたは根まで)。
ここで、どのユーザーがファイルをアップロードしても、このシングルユーザーIDが使用されています。
他の手段(たとえばssh
)でシステムにアクセスするローカルユーザーがいない限り、アップロードディレクトリのアクセス許可を0777
に設定すると、それほど大きな違いはありません。誰かがセキュリティ脆弱性を悪用するあなたのシステムでは、そのようなアクセス許可は誰にも適用されません。そのような攻撃者はたぶん/tmp
を使用します。
実際に必要とされるファイルまたはディレクトリに対するアクセス許可のみを設定することは常に推奨されます。おそらくのようなものを意味し、この場合:
drwxrws--- 5 www-data www-data 4096 Nov 17 16:44 upload/
を私は、Webサーバー以外のローカルユーザがシステム管理者やWebデザイナーのようにそれらのファイルを、アクセスしたいだろうと仮定しています。これらのユーザーをWebサーバーが実行されているグループに追加します。そのディレクトリにアクセスするには、sudo
またはroot権限は必要ありません。また、+s
は、upload/
の新しいファイルとディレクトリが同じグループによって自動的に所有されることを意味します。
あなたの最後の質問については、攻撃者がディレクトリの場所を知っているからといって、魔法のようにファイルを表示させることはできません。ファイルを受け入れてそこに格納する何らかのサービスを実行する必要があります...いいえ、許可を0777
に設定しても、安全性が低下することはありません。
はまだ、あなたがこの全体のセットアップでは、ファイルのアクセス許可で対処できないことを「安全」と「安心」には、いくつかのより多くの次元がありますと、彼らはすべての仕事ので
- アップローダはまだお互いのファイルを上書きすることができます同じユーザーID
- 誰かが誰かが児童ポルノ
を配布するようにサーバーを使用することができます
- アップロードディレクトリに悪意のあるPHPスクリプトをアップロードし、そこから実行し、おそらくあなたのシステム上の他の脆弱性を悪用し、rootアクセスを得ることができます誰かがpaypal.comのlookalikeをアップロードした後、あなたのサーバーからフィッシングサイトを実行する可能性があります。
...おそらくもっとあります。アップロードスクリプトで対処した問題のいくつかは、UNIXファイルのアクセス許可や適用場所についての理解は、セキュリティの問題について学習するときに最初は大したことではありません。考えられる問題の
誰かがあなたのコードを見ました!
出典
2009-02-26 12:26:30
hop
これ以上の情報なしではこの質問はお答えできません。たとえば、ファイルはどのようにアップロードされていますか?あなたのコードにはおそらくアップロードディレクトリの権限があなたの心配の中で最も少ないという独自の問題があります。 – hop
私のコーディングについてpestamisticされていただきありがとうございますが、それは本当に質問に答えることはありません。ファイルは、PHPページで作成されたフォームを通じてアップロードされます。質問のポイントは、777の許可を得てディレクトリセットを残すことが安全かどうかを調べることでしたか? –
その情報で質問を更新してください。 – hop