Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解除上传tmp文件(PHP)链接的安全性_Php_File_File Upload_Upload_Unlink - Fatal编程技术网

解除上传tmp文件(PHP)链接的安全性

解除上传tmp文件(PHP)链接的安全性,php,file,file-upload,upload,unlink,Php,File,File Upload,Upload,Unlink,我在图库脚本中找到了此代码。(我把它简化了一点。) $input_文件是发布到脚本的文件数组 脚本在循环中检查扩展名、上载错误、文件大小等 但是在这种情况下,取消tmp文件的链接不是很安全吗? 如果文件不是上载的文件,则tmp_名称值可以包含任何可能的路径。Fyi,eregi()已被弃用。您所说的“tmp_名称值可以包含任何可能的路径”是什么意思?从技术上讲,脚本运行完毕后,文件将被删除,由于它只是一个临时文件unlink不会删除其中包含任何内容的目录,并且根据您的操作系统下运行的用户/组PHP

我在图库脚本中找到了此代码。(我把它简化了一点。)

$input_文件是发布到脚本的文件数组

脚本在循环中检查扩展名、上载错误、文件大小等

但是在这种情况下,取消tmp文件的链接不是很安全吗?
如果文件不是上载的文件,则tmp_名称值可以包含任何可能的路径。

Fyi,
eregi()
已被弃用。您所说的“tmp_名称值可以包含任何可能的路径”是什么意思?从技术上讲,脚本运行完毕后,文件将被删除,由于它只是一个临时文件unlink不会删除其中包含任何内容的目录,并且根据您的操作系统下运行的用户/组PHP,它必须具有足够的权限来取消目标文件的链接。因此,除非您在root用户/组下运行PHP,否则我不会太担心。(+1在eregi弃用时)临时文件名是由服务器还是用户选择的?
if (
        !eregi("\.(gif|jpeg|jpg|png)$", $input_files['name'][$i])
        ||
        (!is_uploaded_file($input_files['tmp_name'][$i]))
        ||
        intval($input_files['error'][$i])
        ||
        !intval($input_files['size'][$i])
        ||
        !in_array($input_files['type'][$i], array('image/gif','image/jpeg','image/jpg','image/pjpeg','image/png','image/x-png'))
        )
{
    @unlink($input_files['tmp_name'][$i]);
}