我想使用PHP验证服务器中的文件类型.现在,我已经通过检查文件的文件扩展名类型对其进行了验证.这可以正常工作,但是问题在于,这不是验证用户身份的最佳方法,因为更改使用户可以将文本文件转换为jpeg,并且仍然可以上传.
因此,我想做的是添加另一种验证方法,我还想使用PHP检查文件的MIME类型,以识别文件是图像,视频还是音频.
所以我的问题是如何编码,以便可以在PHP中使用MIME类型来验证文件?另外,如果我的文件很大,是否需要很长时间才能进行MIME验证,还是立即进行验证?
下面是我目前仅在使用PHP代码检查文件类型的情况下对Image的代码:
<?PHP
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Error: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
}
}
else
{
echo "Invalid file";
}
?>
解决方法:
MIME类型查找通常非常快,在PHP中,您可以使用finfo
扩展名进行查找.例:
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mimetype = finfo_file($finfo, '/path/to/file.jpg'); // image/jpeg
finfo_close($finfo);
同样,您不应该依赖$_FILES超全局变量的类型索引,因为该值可能被欺骗,攻击者可能想要的任何东西.当然,文件扩展名也一样.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。