为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查PHP中上传文件的文件类型?

如何检查PHP中上传文件的文件类型?

PHP
繁星coding 2019-10-09 17:46:03
在PHP网站上,他们建议的唯一实际检查是使用is_uploaded_file()或move_uploaded_file(),这里。当然,出于多种原因,您通常不希望用户上传任何类型的文件。因此,我经常使用一些“严格”的MIME类型检查。当然,这是非常有缺陷的,因为通常哑剧类型是错误的,并且用户无法上传其文件。伪造和/或更改也非常容易。除此之外,每种浏览器和操作系统对它们的处理方式也不同。另一种方法是检查扩展名,这当然比mime类型更容易更改。如果只需要图像,则可以使用类似的方法getimagesize()。那其他类型的文件呢?PDF,Word文档还是Excel文件?甚至是纯文本文件?编辑:如果您没有mime_content_type或Fileinfo,并且system(“ file -bi $ uploadedfile”)给您错误的文件类型,还有哪些其他选择?
查看完整描述

3 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

看一下mime_content_type或Fileinfo。这些是内置的PHP命令,用于通过查看文件内容来确定文件的类型。还要检查以上两页上的评论,还有其他一些好的建议。


就我个人而言system("file -bi $uploadedfile"),使用本质上是的东西我很幸运,但是我不确定这是否是最好的方法。


查看完整回答
反对 回复 2019-10-09
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

恕我直言,所有MIME类型检查方法都没有用。

假设您已经拥有MIME类型application/pdf。标准方法正在尝试查找看起来像PDF标头(%PDF-或类似的东西)的东西,如果成功,它们将返回“好,好像这是PDF文件”。但这实际上并不代表任何意义。您可以上传仅包含的文件,该文件%PDF-1.4将通过MIME检查。

我的意思是,如果文件具有预期的MIME类型-它将始终通过MIME类型检查,否则结果不确定。


查看完整回答
反对 回复 2019-10-09
  • 3 回答
  • 0 关注
  • 747 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信