コメントに php を含むアップロードされたファイルから Web サイトを保護する最善の方法は何ですか?
私のウェブサイトでは画像のアップロードが許可されています。現時点では有効な画像のみをアップロードできますが、有効な画像にはコメントにコードを書き込むことができます。画像のコメントを確認する方法はありますか? それとも、すべてのメタデータから画像を削除する唯一のオプションですか? また、メタデータから画像を削除すると、どのような結果になるでしょうか?
メタデータを削除するのは非常に簡単です(一般的な GD 拡張機能):
$img = imagecreatefromjpeg("uploaded_img.jpg");
imagejpeg($img, "stripped_img.jpg", 100);
imagedestroy($img);
実際、心配する必要はありません (内部でコードを実行しない場合- 私は非常に疑問に思っています)。
彼らが追加したコメントを取得し、それに対して「addslashes」メソッドを実行できます。
http://php.net/manual/en/function.addslashes.php
これにより、クロス サイト スクリプティングやコード インジェクションのリスクがなくなります。
構成が正しい場合、これらの画像は PHP インタープリターによって解析されるべきではないという Quentin の発言は部分的に正しいですが、単一の防御線に依存しないことをお勧めします。
多くの法域では、コンテンツ、デジタルまたはその他のコンテンツから著作権情報を削除することは (正当に) 違法 (または少なくとも契約違反) です。したがって、意図的にメタデータを削除すると、多くの問題が発生する可能性があります。
私だったら、次のようにします。
1) 指定された拡張機能が PHP インタープリターによって実行されていない場合、構成で何も許可されていないことを確認します。
2) アプリケーションがアップロードされたコンテンツの拡張子の名前変更を許可していないことを確認する
3) 画像に何らかの変換 (回転 / 拡大縮小 / 形式の変更) を適用して、含まれている可能性のあるマルウェア (CVE-2013-1331 など) の一部を排除し、exif データを保持します。
4) コンテンツをドキュメント ルートの外に保持し、プロキシ スクリプトを介してアクセスを制御する
5) exif データ内の php の開始タグと終了タグの出現をエスケープする