PHP-如何使用MIME验证文件?

我想使用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超全局变量的类型索引,因为该值可能被欺骗,攻击者可能想要的任何东西.当然,文件扩展名也一样.

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...