2013-10-10 4 views
3

Мое настоящее кодирование для загрузки изображений Если мое кодирование взломано, дайте мне знать, как вы это сделаете. Я попробую сам на своем сервере.PHP Загрузка изображений Безопасность - gd/imagick/move_upload_file

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 для загрузки файлов.

Вопрос:

** Как вы взломать мой образ кода UPLOADING? (я попытался с подделкой заголовка JPEG и PHP-Г.Д. очищает файл.)
** Почему вы говорите move_uploaded_file закреплен чем imagecreatefrom [Тип] (Если вы говорите, мой метод не защищен)

I просто перешел в nginx. Как отключить все выполнение сценария при загрузке каталога? PHP, ш, CGI, ...

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

** Я никогда не пробовал Imagick для загрузки файлов на сервер. Я использую его для обработки изображений.

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

ответ

2

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

location ~* ^/(upload|images|more_dirs)/.*\.(php|php5|sh|more_types)$ 
{ 
    deny all; 
} 
Смежные вопросы