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