【发布时间】:2014-11-12 12:50:19
【问题描述】:
在处理上传文件时$_FILES['foo']['type'] 完全不可靠。我发现如果您更改 OS X 上的扩展名,“类型”会自动更改。
改为考虑:
$fileInfo = new \finfo(FILEINFO_MIME);
$mimeType = $fileInfo->buffer(file_get_contents($_FILES['foo']['tmp_name']));
$mimeType = explode(';', $mimeType);
现在,如果我将 PHP 脚本重命名为 .jpg 并上传(在 OS X 10.10 上)$_FILES['foo']['type'] = image/jpeg 和 $mimeType = text/x-php。
文件类型可以很容易地改变,但是 PHP 的 finfo::buffer 怎么会被欺骗呢? PHP 检查的$_FILES['foo']['type'] 和finfo(FILEINFO_MIME) 有什么区别?
【问题讨论】: