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

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

Mary-Kate Olsen
リリース: 2024-12-01 22:43:11
オリジナル
636 人が閲覧しました

How Can I Securely Verify Uploaded File Types in PHP?

PHP でアップロードされたファイルの種類を検証する

PHP でアップロードされたファイルの種類を検証する場合、ユーザーが指定した $_FILES['fupload']['type'] に依存します。操作できるので危険です。この方法では、エラー処理の不一致が生じる可能性があります。

これに対処するには、mime_content_type() を使用して、より信頼性の高いファイル タイプ検出を取得することを検討してください。ただし、mime_content_type() はユーザー入力にもある程度依存します。

より堅牢なアプローチの場合:

exif_imagetype() の利用:

$allowedTypes = [IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF];
$detectedType = exif_imagetype($_FILES['fupload']['tmp_name']);
$error = !in_array($detectedType, $allowedTypes);
ログイン後にコピー

このメソッドは、アップロードされたファイルの実際の内容を確認し、署名に基づいてその種類を検証します。

活用finfo():

サーバーが finfo() をサポートしている場合、より包括的なファイル分析が提供されます。次のコード サンプルは、その使用法を示しています。

$mimeTypes = ['image/png', 'image/jpeg', 'image/gif'];
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mimeType = $finfo->file($_FILES['fupload']['tmp_name']);
$error = !in_array($mimeType, $mimeTypes);
ログイン後にコピー

これらのメソッドのいずれかを実装すると、ファイル タイプ проверки の信頼性が向上し、エラー処理の一貫性が向上します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート