上传脚本使用哪个临时目录?

时间:2015-10-10 08:30:04

标签: php file-upload web-hosting

我正在我的项目上构建一个上传功能。我已经对存在,大小和类型进行了其他验证,但还需要更多验证。我发现mime验证,无论用户上传什么文件扩展名,它都会检查真正的文件类型。下面的代码对我有用。现在,每当用户尝试将.php文件上传为.png / jpg / jpeg或任何其他虚假扩展名时,我的代码就会被捕获为恶意文件类型。但我有一个问题,当用户首先上传文件时,它会进入临时目录。是从客户端PC还是从我们的服务器使用该临时目录?如果它来自我们的服务器那么恶意假扩展文件对我们是否危险?

$imageInfo = getimagesize($_FILES['file']['tmp_name']);

    if ($imageInfo['mime'] == ("image/png") || $imageInfo['mime'] == ("image/jpeg")
            || $imageInfo['mime'] == ("image/jpg")) {

2 个答案:

答案 0 :(得分:1)

来自manual

  

默认情况下,文件将存储在服务器的默认临时目录中,除非在php.ini中使用upload_tmp_dir指令给出了另一个位置。可以通过在PHP运行的环境中设置环境变量TMPDIR来更改服务器的默认目录。

  

如果文件尚未移走或重命名,该文件将在请求结束时从临时目录中删除。

除非你做某些故意愚蠢的事情,比如在那个临时目录中找到的运行文件,或者导致它们被运行,否则你很好。文件只是在短时间内存在而不被删除是没有危险的。

答案 1 :(得分:1)

临时目录来自您的服务器,可以在temp目录中执行文件,因此您可以运行sys_get_temp_dir(),以便了解临时目录的位置并将权限更改为只读和写入