上传图片时,我可以信任$_FILES
的文件类型吗?或者我必须再次使用exif_imagetype()
检查?
答案 0 :(得分:7)
文件的mime类型,如果浏览器提供此信息。一个例子是“image / gif”。但是,在PHP方面没有检查这个mime类型,因此不会将其值视为理所当然。
答案 1 :(得分:5)
不,你不能相信$_FILES['userfile']['type']
变量。此变量中存在的值可以伪造。您可以使用finfo_file
更可靠地检测文件类型:
$finfo = finfo_open(FILEINFO_MIME_TYPE); // we need mime type
echo finfo_file($finfo, "/path/to/uploaded/file"); // displays something like image/gif
finfo_close($finfo);
这些功能需要PHP> = 5.3.0。
答案 2 :(得分:4)
永远不要相信来自外部的任何内容,特别是文件上传!
检查尺寸,位置,哑剧/类型,扩展以及您可以检查的任何其他内容!
答案 3 :(得分:3)
我总是使用下一个功能检查有效图像:
function Check_Image($Filename) {
if ($Check_Image = @getimagesize($Filename)) {
return TRUE;
}
return FALSE;
}
答案 4 :(得分:2)
不,你不能相信它,因为this information is provided by the client browser。
$_FILES['userfile']['type']
文件的mime类型(如果是浏览器) 提供了这些信息。一个例子是“image / gif”。这个哑剧 但是,在PHP端没有检查类型,因此不需要 它的价值是理所当然的。