在 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中文网其他相关文章!