【发布时间】:2010-09-23 13:37:29
【问题描述】:
在 PHP 网站上,他们建议的唯一真正的检查是使用 is_uploaded_file() 或 move_uploaded_file()、here。当然,出于各种原因,您通常不希望用户上传任何类型的文件。
因此,我经常使用一些“严格”的 mime 类型检查。当然这是非常有缺陷的,因为通常 mime 类型是错误的,用户无法上传他们的文件。它也很容易伪造和/或更改。除此之外,每个浏览器和操作系统都以不同的方式处理它们。
另一种方法是检查扩展名,当然比mime类型更容易更改。
如果你只想要图片,使用getimagesize() 之类的就可以了。
其他类型的文件呢? PDF、Word 文档或 Excel 文件?甚至是纯文本文件?
编辑:如果您没有 mime_content_type 或 Fileinfo 并且 system("file -bi $uploadedfile") 给您错误的文件类型,还有哪些其他选项?
【问题讨论】:
-
getimagesize()函数明确指出您不应使用此函数来验证图像是否为图像。Do not use getimagesize() to check that a given file is a valid image. Use a purpose-built solution such as the Fileinfo extension instead.php.net/manual/en/function.getimagesize.php
标签: php validation file-upload mime-types