在PHP网站上,他们建议的唯一真实检查是使用is_uploaded_file()
或move_uploaded_file()
,在这里.当然,出于各种原因,您通常不希望用户上传任何类型的文件.
因此,我经常使用一些"严格"的mime类型检查.当然这是非常有缺陷的,因为mime类型通常是错误的,用户无法上传他们的文件.伪造和/或改变也很容易.除此之外,每个浏览器和操作系统都以不同的方式处理它们.
另一种方法是检查扩展,当然比mime类型更容易改变.
如果你只想要图像,使用类似的东西getimagesize()
会起作用.
那么其他类型的文件呢?PDF,Word文档或Excel文件?甚至是文本文件?
编辑:如果你没有mime_content_type或Fileinfo和系统("file -bi $ uploadedfile")给你错误的文件类型,还有哪些其他选项?
看一下mime_content_type或Fileinfo.这些是内置的PHP命令,用于通过查看文件的内容来确定文件的类型.另外还要检查上面两页的评论,还有一些其他好的建议.
我个人幸运地使用了一些基本的东西system("file -bi $uploadedfile")
,但我不确定这是不是最好的方法.
恕我直言,所有MIME类型的检查方法都没用.
假设你有哪个应该有MIME类型application/pdf
.标准方法试图找到看起来像PDF标题的东西(%PDF-
或类似的东西),并且它们将成功返回'好吧,好像这是一个PDF文件'.但实际上这并不意味着什么.您可以上传仅包含的文件%PDF-1.4
,它将通过MIME检查.
我的意思是如果文件具有预期的MIME类型 - 它将始终传递MIME类型检查,否则结果是未定义的.