我会尽力为您翻译以下内容,涉及编程方面:
然后,我将这个文件重命名为
我的结论是:$_FILES ['file'] ['type'] 仅检查文件扩展名,而不检查原始文件类型。
下面的代码来自w3cschool:
我使用 var_dump(@$_FILES['file']['type'])
来测试我上传的文件类型
首先,我上传了一个名为 "uninstall.exe
" 的 exe 文件
,它返回了
"string 'application/octet-stream' (length=24)"
然后,我将这个文件重命名为
uninstall.png
,它返回string 'image/png' (length=9)
我的结论是:$_FILES ['file'] ['type'] 仅检查文件扩展名,而不检查原始文件类型。
下面的代码来自w3cschool:
$allowedExts = array("gif", "jpeg", "jpg", "png");
$extension = end(explode(".", $_FILES["file"]["name"]));
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts))
我认为上面代码中的$_FILES["file"]["type"]
是不必要的,我们可以使用explode()
和in_array()
来检查文件扩展名。
我只是一个PHP初学者,有人能确认我的想法吗?谢谢!
$_FILES['file']['type']
不检查扩展名 - 它是从用户机器发送的请求头中的信息。它可以用作提示(对于在用户机器上可识别但在服务器上不可识别的非标准文件格式),但在安全方面不应被信任。 - dev-null-dwellerw3c
schools而是w3
schools) - dev-null-dweller