在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"),使用本质上是的东西我很幸运,但是我不确定这是否是最好的方法。
慕姐8265434
TA贡献1813条经验 获得超2个赞
恕我直言,所有MIME类型检查方法都没有用。
假设您已经拥有MIME类型application/pdf
。标准方法正在尝试查找看起来像PDF标头(%PDF-
或类似的东西)的东西,如果成功,它们将返回“好,好像这是PDF文件”。但这实际上并不代表任何意义。您可以上传仅包含的文件,该文件%PDF-1.4
将通过MIME检查。
我的意思是,如果文件具有预期的MIME类型-它将始终通过MIME类型检查,否则结果不确定。
- 3 回答
- 0 关注
- 747 浏览
添加回答
举报
0/150
提交
取消