最近、ユーザーがアップロードした画像を処理する必要がある多くのアプリケーションに取り組み、拡張機能とMIMEタイプを検証するための手順が取られました。
しかし、画像が有効であることを確認するために他に何ができますか?
私の場合、アップロードはPHPによって処理され、次に Gd または ImageMagick に渡されます。どちらも拒否の原因となる脆弱性の影響を受けますサービスと任意のコードの実行の可能性。
特にPHPおよび一般的なWebまたは非Webアプリケーションの両方に対して、検証プロセスを改善するために人々が提供できる提案があれば、興味があります。
簡単に聞こえるかもしれませんが、画像チェックは難しいかもしれません。少なくとも次のアクションを実行する必要があります。
また、これらのチェック後に画像のタイプを明示的に変更することをお勧めします。 PNGからJPGへ。シンプルですが、うまく機能します。
これまでに提出された回答に同意しません。
あなたが提案したものなどの画像操作ライブラリを使用して、(おそらくユーザーにサイズ変更を強制することによって)画像を書き換える必要があります。
GIFAR、XSS、ファイルインクルージョンなどの脆弱性があるため、EXIFデータなどを削除するには、注意が必要です。これにより、攻撃の連鎖が可能になる可能性があります。
2 MBかそれを超えないようにサイズ制限を設定できます。これは、ストレージスペースを確保し、ユーザーが高解像度の画像をアップロードできないようにするのに役立ちます。