Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Является ли данный код безопасным для загрузки изображений

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
livote
Отправлено: 01 Ноября, 2012 - 19:11:20
Post Id



Частый гость


Покинул форум
Сообщений всего: 243
Дата рег-ции: Авг. 2012  


Помог: 0 раз(а)

[+][+]


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if ($_POST["Submit"]){
  3.   //Проверка, действительно ли загруженный файл является изображением
  4.   $imageinfo = getimagesize($_FILES["uploadimg"]["tmp_name"]);
  5.   if($imageinfo["mime"] != "image/gif" && $imageinfo["mime"] != "image/jpeg" && $imageinfo["mime"] !="image/png") {
  6.   print "Загруженный файл не является изображением";die;
  7.   }
  8.  
  9.   //Сохранение загруженного изображения с расширением, которое возвращает функция getimagesize()
  10.   //Расширение изображения
  11.   $mime=explode("/",$imageinfo["mime"]);
  12.   //Имя файла
  13.   $namefile=explode(".",$_FILES["uploadimg"]["name"]);
  14.   //Полный путь к директории
  15.   $uploaddir = "Z:/home/localhost/www/scripts/upload/";
  16.   //Функция, перемещает файл из временной, в указанную вами папку
  17.   if (move_uploaded_file($_FILES["uploadimg"]["tmp_name"], $uploaddir.$namefile[0].".".$mime[1])) {
  18.     print "Изображение успешно загружено";
  19.   }else{
  20.     print "Произошла ошибка";
  21.   }
  22. }
  23. ?>
  24. <form name="upload" enctype="multipart/form-data" action="upload.php" method="post">
  25.   <input type="hidden" name="MAX_FILE_SIZE" value="102400" />
  26.   <input type="file" name="uploadimg" />
  27.   <input type="submit" name="Submit">
  28. </form>


я не параноик, но всё же.мало ли что народу на сайте в голову взбредёт.мне интересно защитит ли этот код хотя бы от элементарных атак.профи,я думаю будет не до моего сайта Улыбка


-----
Не следует бояться зайти за пределы того, что считается возможным – ибо именно там находится успех.
 
 Top
Stivir
Отправлено: 01 Ноября, 2012 - 20:06:00
Post Id


Частый гость


Покинул форум
Сообщений всего: 128
Дата рег-ции: Май 2012  


Помог: 2 раз(а)




В функции getimagesize типов файлов больше чем Вы указали в проверке, например если расширение у файла SWF или TIFF, ведь это картинка, а Вы их не указываете. Можно проверку сделать по другому:
PHP:
скопировать код в буфер обмена
  1.  
  2. $loadPath = 'im/'.basename($_FILES['pic']['name']);//путь для сохранения картинки
  3. $structFile = getimagesize($loadPath);
  4. if($_FILES['pic']['size'] < $maxFileSize && isset($structFile[2]))//проверки: размер и картинка ли?
  5. {
  6.     echo 'Порядочек';
  7. }
  8.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB