PHP でアップロードされたファイルの種類を検証する場合、ユーザーが指定した $_FILES['fupload']['type'] に依存します。操作できるので危険です。この方法では、エラー処理の不一致が生じる可能性があります。
これに対処するには、mime_content_type() を使用して、より信頼性の高いファイル タイプ検出を取得することを検討してください。ただし、mime_content_type() はユーザー入力にもある程度依存します。
より堅牢なアプローチの場合:
$allowedTypes = [IMAGETYPE_PNG, IMAGETYPE_JPEG, IMAGETYPE_GIF]; $detectedType = exif_imagetype($_FILES['fupload']['tmp_name']); $error = !in_array($detectedType, $allowedTypes);
このメソッドは、アップロードされたファイルの実際の内容を確認し、署名に基づいてその種類を検証します。
サーバーが 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 サイトの他の関連記事を参照してください。