ホームページ >バックエンド開発 >PHPチュートリアル >PHP でアップロードされた画像ファイルの種類を安全に検証するにはどうすればよいですか?

PHP でアップロードされた画像ファイルの種類を安全に検証するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-30 19:05:12403ブラウズ

How Can I Securely Verify Uploaded Image File Types in PHP?

PHP でのファイル タイプ検証のデバッグ

画像ファイル タイプを検証する一般的なアプローチを使用しているにもかかわらず、一部のユーザーはアップロード プロセス中にエラーに遭遇しました。

提供されるコード スニペットは、ユーザーが提供する $_FILES['fupload']['type'] プロパティを利用します。悪意のあるユーザーによる操作の可能性があります。この脆弱性に対処するには、mime_content_type() を使用すると精度が向上することが提案されています。

問題の解決

ただし、推奨される解決策は、ユーザー定義の値に完全に依存しないことです。代わりに、独自の型検証を実行することをお勧めします。

画像の場合、exif_imagetype() 関数は、ファイルの実際の形式を判断するための信頼できる方法を提供します。

$allowedTypes = array(IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF);
$detectedType = exif_imagetype($_FILES['fupload']['tmp_name']);
$error = !in_array($detectedType, $allowedTypes);

このアプローチでは、画像のバイナリ署名を直接取得し、ユーザーがファイル タイプを操作する可能性を排除します。

あるいは、より高度なファイル タイプ検証を行うには、サーバーが finfo 関数をサポートしている場合は、finfo 関数の使用を検討してください。

以上がPHP でアップロードされた画像ファイルの種類を安全に検証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。