题
嗨,大家,如果我一次上传10张图像,我正在使用@php文件上传方法 @上传图像(每个图像为2000 /3000维度)。然后单击“保存”功能不起作用。如果我上传5张图像或少于5张图像,那么它的编码上的正常工作正常工作,我只是将我的php代码包含在此帖子中 <input value="Save" type="submit" name="SubSave" id="SubSave" onClick="return changes();">
if($_POST['SubSave'] == "Save"){
$aid = $_GET['rid'];
$updcount = $_POST['theValue'];
if($_SESSION["almgtype"]==1 || (GetUserNoPhoto($_SESSION["almgid"]))>(GetTotalPhotoCount1($_SESSION["almgid"],$aid))) {
$uid = $_SESSION["almgid"];
for($k=1;$k<=$updcount;$k++) {
//echo $k;
echo $_FILES["uploadfile"]["type"];
if($_FILES["uploadfile".$k]["name"]!="") {
if(($_FILES["uploadfile".$k]["type"] == "image/gif") || ($_FILES["uploadfile".$k]["type"] == "image/jpeg")|| ($_FILES["uploadfile".$k]["type"] == "image/pjpeg") || ($_FILES["uploadfile".$k]["type"] == "image/png")) {
if ($_FILES["uploadfile".$k]["error"] > 0)
{
echo "Error: " . $_FILES["uploadfile".$k]["error"] . "<br />";
}
else
{
move_uploaded_file($_FILES["uploadfile".$k]["tmp_name"],
"photoalbum/" . $_FILES["uploadfile".$k]["name"]);
$uploadfile = "photoalbum/" . $_FILES["uploadfile".$k]["name"];
}
$path = $uploadfile;
$checklist = "select * from amt_photos1 where aid = '".trim($aid)."' and uid = '".trim($uid)."' and path = '".trim($path)."'";
$chkresult = mysql_query($checklist);
if(mysql_num_rows($chkresult) == 0) {
$i = 0;
$path =$uploadfile;
$result = "insert into amt_photos1 set uid = '".trim($uid)."',
aid = '".trim($aid)."',
path = '".trim($path)."',
status = '0',
createdby = '".$_SESSION["almgid"]."',
createddate = now()";
$rowlist = mysql_query($result) or die("Error:(".mysql_error().")".mysql_error());
}
/********************** if file already exist means ******************************************/
else {
$err= "The Uploaded file name ".$path." Is already exisit in the Album. Rename It or try to add Any other Photos";
}
/********************** if file already exist means ******************************************/
$path ="";
$uploadfile = "";
$i = "";
} // file extention
else {
$err= "Unable To Upload The File Please Check The File Extention.Try Again Later";
}
}
}
}
} // if save close
解决方案
您可能需要更改php.ini配置文件中的最大帖子大小(post_max_size
环境)。
其他提示
您可以使用命令 phpinfo()
倾倒您的配置。正如其他人所说的那样,您可能需要增加上传大小和执行时间。
这些可以通过 .htaccess文件.
php_value upload_max_filesize 20M
php_value post_max_size 20M
php_value max_execution_time 200
php_value max_input_time 200
就像警告一样:您的上传处理脚本将使您完全颠覆您的服务器完全琐碎:
- 你盲目相信
$_FILES[...]['type']
值正确设置了值 - 此值完全在用户的控制下,它们可以塞入“ Image/jpeg”中,并上传他们想要的任何类型的文件 - 你盲目相信
$_FILES[...]['filename']
值正确设置了值 - 同样,此值完全在用户的控制下,如果他们想进入hackme.php”,则可以将其塞入“ hackme.php”。 - 您盲目地将文件写入您的Photoalbum目录,但请勿检查用户提供的文件名是否包含路径数据
因此,如果有人上传以下文件会发生什么:
$_FILES['uploadfile0']['type'] = 'image/gif';
$_FILES['uploadfile0']['filename'] = '../pwn_me.php';
您现在很乐意放置一个用户提供的PHP脚本 到您的Web服务器 他们现在可以做他们想做的任何事情。
最重要的是,您的数据库查询盲目地将相同的数据插入查询中,使您对SQL注入攻击开放。同样,在移动文件后,您不检查文件名碰撞。因此,有人可以上传恶意脚本,但只能为该特定的文件名做一次。恭喜,您已经在服务器上实现了版本的攻击。您将拥有“ pwn_me.php”,“ pwn_me2.php”,“ pwn_me3.php”,“ my_little_pwnme.php”等。
不隶属于 StackOverflow