2011-01-03 31 views
2

私はLAMPスタック上で実行されているWebサイトの一部としてオンラインファイルマネージャーで作業しています。アップロードされたファイルに対して許可しないファイル拡張子は何ですか? ".php"は明らかです。安全なファイル拡張子

+1

ファイル拡張子のチェックは100%ではありません。ユーザーはPHP – ajreal

答えて

5

私はあなたがconfiguring Apacheの方が良いと思うので、アップロードディレクトリからスクリプトを実行しようとしません。誰かが.phpファイルをアップロードするかどうかは関係ありません。他の誰かがそのファイルを参照すると、サーバー上で実行しようとするのではなく、.gifまたは.jpgと同じようにサーバーが提供します。 、ユーザーは自分のコンピュータに.phpファイルをダウンロードするだけです。

(私はApacheのエキスパートではありませんので、スクリプトの実行を無効にするためにどのような設定変更が必要かを正確にはわかりませんが、設定ファイルを見るのは簡単でしょう。すでにをメインディレクトリのにアップロードし、アップロードディレクトリを逆にしてください。)

また、GIFAR exploitを気にする必要があります。

6

私はそれを逆にするでしょう。あなたが投稿できるスペックファイルのみ。さもなければ、を考慮していない、非常に危険な可能性があるさまざまな種類のファイルが存在する可能性があります。あなたの "disallow PHP"を考慮し、 ".php5"や ".phps"も考慮しましたか?数分をとり、あなたが許可する特定のタイプのリストをコンパイルする方がはるかに良いです。これはフロントローディングのビットを取るが、最終的に大きな頭痛を軽減する可能性があります。

+2

ナンセンス以外の拡張子を持つPHPスクリプトをアップロードすることはできますが、どのユーザーも偽の拡張子を偽造することでPHPスクリプトをアップロードできます – ajreal

+3

偽の拡張は、Apacheで実行される? – Dwayne

0

.htmlファイルも忘れないでください。

ユーザーがアップロードしたファイルを実行できないようにする必要があるだけでなく、ユーザーがアップロードしたHTMLの配信を厳しく制限する必要もあります。誰かがあなたのログインと認証をいくつかのjavascriptで覆すことができます。サーバー上で実行されていなくても、ドメインからサービスが提供されていると危険です。

ユーザーがアップロードしたファイルは決して実行しないでください。

+1

これは、別のドメインからファイルを提供することで緩和されるため、Cookieにアクセスすることはできません。 –

-2

Apacheは、Webツリー内に配置された特別なファイルを介して構成を分散管理することもできます。ファイルは通常.htaccessと呼ばれますが、AccessFileNameディレクティブには任意の名前を使用できます。 .htaccessファイルに置かれたディレクティブは、ファイルを置くディレクトリとすべてのサブディレクトリに適用されます。 .htaccessファイルは、メインの設定ファイルと同じ構文に従います。 .htaccessファイルはすべての要求で読み込まれるため、これらのファイルの変更がすぐに反映されます。

+0

[回答方法​​](http://stackoverflow.com/questions/how-to-answer)をご覧ください。 –