exif_imagetype を実行するのは少し複雑です。この関数は、ファイルの先頭にあるマジック ナンバーをチェックするだけなので、さらにチェックが必要です。ソフトウェアについての知識がなければ、判断を下すのは難しいですが、次の例を考えてみてください。
JPEG マジック ナンバー 0xFFD8FFE0 の後に文字列<? passthru($_GET["cmd"]); ?>
.
あなたのサーバーにアップロードします。マジックナンバーはバイパスしexif_imagetype
ます。ファイルが にアップロードされwww.your-domain.com/uploads/shell.php
ます。次に、 に移動しwww.your-domain.com/uploads/shell.php?rm -r *
ます。サーバーは開始を検出し、 <?
PHP の解釈を開始します。わーい!あなたが Linux Web サーバーで実行していると仮定して、すべてのアップロードを削除しました。
画像のメタデータに悪意のあるスクリプトが含まれている可能性があるため、画像の有効性をさらに詳しくチェックしても役に立ちません。これは、ファイル拡張子のホワイトリストを使用することによってのみ防止されます。
[TL;DR] さらにチェックしないと安全ではありません。適切なファイル名を確保し、ファイル拡張子のホワイトリストを使用し、ファイル サイズを制限し、標準的なセキュリティ対策を実行する必要があります。