ファイルでgetimagesize()
を呼び出し、返された値がfalse
と異なる場合、ファイルが画像であるかどうかを判断するのに十分でしょうか?getimagesize()を使用してファイルが画像であるかどうかを確認する
ファイルがphpのイメージであるかどうかを判断する他の方法はありますか?単純に拡張子を確認するよりも絶対的な解決策はありません。
ファイルでgetimagesize()
を呼び出し、返された値がfalse
と異なる場合、ファイルが画像であるかどうかを判断するのに十分でしょうか?getimagesize()を使用してファイルが画像であるかどうかを確認する
ファイルがphpのイメージであるかどうかを判断する他の方法はありますか?単純に拡張子を確認するよりも絶対的な解決策はありません。
サポートされているファイル形式であるかどうかを調べるだけで十分です。実際にはファイルのヘッダーバイトを解析するため、非常に信頼性があります。
これは、PHPに組み込まれているのが最もよい方法です。 ImageMagick'sidentify
コマンドのような
高度なツールは、本質的に同じことを - あなたは(自分のリストはIMAGETYPE_*
定数で、hereある)getimagesize()
でサポートされているものよりも多くのファイルフォーマットをサポートする必要がある場合にのみ、それらを考慮します。
getimagesize()は、ファイルがイメージであることを確信しています。はい。
画像に有効なヘッダーが含まれているかどうかが判断されます。
実際の画像データに破損があるかどうかは判断できません。実際の画像データには、画像が乱雑に表示されたり、画像の読み込み中にエラーが発生することがあります。
ファイルが有効な画像ファイルである可能性がありますが、メタデータ、画像データ内、または画像データの最後の後に他のデータを隠すことも可能です。そのため、getimagesize()は有効なイメージを持っていると言えるかもしれませんが、必ずしもそのファイルが別のタイプとしても有効ではありません。 JARファイルとZIPファイルはファイルの最後から読み込まれるため、ファイルが有効な画像と有効なJAR/ZIPファイルの両方になる可能性があり、JARファイルはブラウザで実行可能です(GIFAR exploitの基礎)。
GIFARエクスプロイトのヘッドアップのおかげで、そのことについて知りませんでした! – ChrisR