PHP Image Upload Security-gd / imagick / переместить файл загрузки


Мое настоящее кодирование для загрузки изображений Если мое кодирование можно взломать, Дайте мне знать, как вы это сделаете. Я попробую сделать это сам на своем сервере.

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 загружать файлы на сервер. Я использую его для обработки изображений.

Или мне нужно объединить их, чтобы загрузить файл безопасным способом?

1 3

1 ответ:

Для Nginx, чтобы отключить выполнение скриптов, ваш способ правильный. Чтобы запретить другие типы скриптов,

location ~* ^/(upload|images|more_dirs)/.*\.(php|php5|sh|more_types)$ 
{ 
    deny all; 
}