尽管使用常见方法来验证图像文件类型,但有些用户在上传过程中遇到了错误。
提供的代码片段利用了用户提供的 $_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 可以运行。
以上是如何在 PHP 中安全地验证上传的图像文件类型?的详细内容。更多信息请关注PHP中文网其他相关文章!