3

我目前用于上传图像 的编码如果我的编码是可破解的,请告诉我你将如何做到这一点。我会在我的服务器上自己尝试一下。

if ((strtolower($_FILES["user_image"]["type"]) == "image/jpeg" || strtolower($_FILES["user_image"]["type"]) == "image/pjpeg" || strtolower($_FILES["user_image"]["type"]) == "image/gif" || strtolower($_FILES["user_image"]["type"]) == "image/x-png" || strtolower($_FILES["user_image"]["type"]) == "image/png") && ($_FILES["user_image"]["size"] < 4194304)) {         
            if(strtolower($_FILES["user_image"]["type"]) == "image/jpeg" || strtolower($_FILES["user_image"]["type"]) == "image/pjpeg"){    
                $image_source = imagecreatefromjpeg($_FILES["user_image"]["tmp_name"]);
            }       
            // if uploaded image was GIF
            if(strtolower($_FILES["user_image"]["type"]) == "image/gif"){   
                $image_source = imagecreatefromgif($_FILES["user_image"]["tmp_name"]);
            }           
            // if uploaded image was PNG
            if(strtolower($_FILES["user_image"]["type"]) == "image/x-png" || strtolower($_FILES["user_image"]["type"]) == "image/png"){
                $image_source = imagecreatefrompng($_FILES["user_image"]["tmp_name"]);
            }

这是我正在使用的上传方法。

我们可以使用 move_uploaded_file 和 imagick 来上传文件。

问题 :

** 你将如何破解我的图片上传代码?(我尝试使用假 jpeg 标头和 php-gd 清理文件。)
** 你为什么告诉move_uploaded_file比 imagecreatefrom[type] 安全(如果你说我的方法不安全)

我刚搬到nginx。如何禁用上传目录中的所有脚本执行?php, sh, cgi, ...

location /uploads/ { 
  location ~ .*\.(php)?$
  { 
    deny all; 
  }
}

** 我从未尝试过imagick将文件上传到服务器。我正在使用它来处理图像。

还是我需要将它们结合起来以安全的方式上传文件?

4

1 回答 1

2

对于 Nginx,要禁用脚本的执行,你的方法是正确的。要禁止更多脚本类型,

location ~* ^/(upload|images|more_dirs)/.*\.(php|php5|sh|more_types)$ 
{ 
    deny all; 
}
于 2013-10-10T08:16:13.213 回答