0

重複の可能性:
アップロードによるセキュリティの脅威

ユーザーが私たちのサイトに画像をアップロードできるようにしています。ファイル.jpg/.jpeg / .gifの拡張子とmimeタイプをチェックして、危険なファイルがアップロードされていないことを確認する必要があると思いますか?

また、アップロード時にファイルのサイズを変更して、名前が変更されたexeファイルなどではなく、実際の画像ファイルであることを確認する必要がありますか?たとえば、サイズ変更が失敗した場合、それは画像ファイルではありません。

他に警戒すべき攻撃形態はありますか?

編集:phpファイルを実行できないように画像フォルダに.htaccessファイルも追加します:

AddHandler cgi-script .php .php3 .php4 .phtml .pl .py .jsp .asp .htm .shtml .sh .cgi
Options -ExecCGI
order deny,allow
deny from all
4

4 に答える 4

2

ファイルタイプを識別する最良の方法は、fileコマンドラインツールまたは同じ「マジックストリング」データベースの原則に基づく他のツールを使用することです。これは、多数のファイルのバイナリ署名を認識し、どれが一致するかを示します。

このアプローチの長所は、拡張子とMIMEタイプの両方の操作の影響を受けず、ファイルのサイズ変更に使用する画像操作ライブラリの潜在的な悪用の影響を受けないことです(これは何年にもわたって行われています)。

このアプローチの短所は、境界の場合には失敗する可能性があり(一般に検証では大きな問題ではない)、多くの共有ホスティングプロバイダーでは利用できない可能性があるそのようなツールを使用できる必要があることです。利点として、このアプローチを使用したPHP拡張機能がここにあります:http ://www.php.net/manual/en/intro.fileinfo.php

于 2012-06-22T09:33:26.083 に答える
2

画像のサイズを変更するのは良い考えのように思えます。一部の実際の画像は、ローカルインクルードの脆弱性で使用するためだけにphpコードでアップロードされることを忘れないでください。

于 2012-06-22T09:56:39.027 に答える
-1

攻撃者はsomethingbad.php.jpgというファイルを強力にアップロードでき、通常のphpスクリプトのように実行されるため、アップロードされたファイルのmimeタイプを必ず確認する必要があります。

于 2012-06-22T09:26:12.047 に答える
-2

ファイルのアップロードにセキュリティ上の問題はありません。

  1. 画像用の拡張子を持つアップロードされたファイルのみを保存するようにしてください
  2. ファイルサイズには上限があります。これにより、悪意のあるユーザーが(たとえば/dev/zero)送信することからサーバーが保護されます。
  3. これらのファイルを提供するときは、MIMEタイプがイメージ用であることを確認してください。

他の投稿は正しくありません

  1. ブラウザはPHPコードを実行しません
  2. ブラウザから何も信用しないでください。アドバイスとしてブラウザからデータを取得するだけです。つまり、MIMEタイプを偽造することができます。
于 2012-06-22T10:20:32.800 に答える