我目前拥有:
$file_name = $HTTP_POST_FILES['uid']['name'];
$random_digit=rand(0000,9999);
$new_file_name=$random_digit.$file_name;
$path= "uploads/images/users/".$new_file_name;
if($ufile !=none)
{
if(copy($HTTP_POST_FILES['uid']['tmp_name'], $path))
{
echo "Successful<BR/>";
echo "File Name :".$new_file_name."<BR/>";
echo "File Size :".$HTTP_POST_FILES['uid']['size']."<BR/>";
echo "File Type :".$HTTP_POST_FILES['uid']['type']."<BR/>";
}
else
{
echo "Error";
}
}
这会在当前文件名前生成一个随机数,例如4593example.jpg。但我只想将整个文件名重写为4593.jpg,删除当前名称(例如example)。当我尝试这样做时,我丢失了扩展名(.jpg)。希望能得到帮助。
copy()
可能会发生哪些攻击?谢谢。 - alexmove_uploaded_file()
是为了应对这个漏洞而引入的。我曾经在2000年左右用这个方法闯进了一个朋友的phpBB :) 等等,我看看能否找到链接。 - Pekka$_FILES["xyz"]["tmp_name"]
并将本地文件路径放入其中。如果你知道攻击的应用程序结构,你就可以通过这种方式获取数据库配置文件等信息。copy()
会愚蠢地将配置文件复制到新位置,如果上传是为了头像图片,则可以从中下载它。move_uploaded_file()
只会移动实际上传的文件。 - Pekka