Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Загрузка картинки на сервер
 
 автор: nikolayers   (30.04.2011 в 21:43)   письмо автору
 
 

Не знаю вообще с чего начать, так как в инете начитался, что при создании скрипта для загрузки файлов на сервер могуть возникнуть уязвимости...
Можете написать безопастный скрипт, удовлетворяющий следующие условия?
1.Загружаемые картинки должны иметь формат jpg или png;
2.Размер картинок не должен превышать 128 кбайт.
3.На сервере картинки должны сохраняться под другим именем, например 1.jpg а не как назвал их юзер (мояпопа.jpg)
4.Скрипт должен быть безопастным...

  Ответить  
 
 автор: cheops   (30.04.2011 в 22:35)   письмо автору
 
   для: nikolayers   (30.04.2011 в 21:43)
 

2. Уменьшение изображений - это отдельная задача, готовую функцию можно обнаружить по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=145.
3. А какой принцип переименования вы хотите использовать (время, транслитация русских символов)? Как вам это видится?

  Ответить  
 
 автор: nikolayers   (01.05.2011 в 14:11)   письмо автору
 
   для: cheops   (30.04.2011 в 22:35)
 

да нет...просто ну там файл называется sdatd7923nda.png а на сервере сохранялся бы под именем $name.png, где $name это имя юзера...

  Ответить  
 
 автор: cheops   (01.05.2011 в 14:39)   письмо автору
 
   для: nikolayers   (01.05.2011 в 14:11)
 

А имя пользователя откуда извлекается (или у вас уже есть готовая переменная $name)?

  Ответить  
 
 автор: cheops   (30.04.2011 в 23:03)   письмо автору
 
   для: nikolayers   (30.04.2011 в 21:43)
 

1. Проверку расширения файла можно осуществить, отталкиваясь от следующего скрипта
<?php
  $filename 
"sample.png";
  
$ext pathinfo($filenamePATHINFO_EXTENSION);
  
$array = array("jpg""jpeg""png");
  if(!
in_array($ext$array)) exit("Недопустимый формат файла");
  else echo 
"Все хорошо";
?>

  Ответить  
 
 автор: parczynski   (01.05.2011 в 02:51)   письмо автору
 
   для: cheops   (30.04.2011 в 23:03)
 

проверка формата по расширению на мой взгляд не очень удачная, при определенных настройках сервера можно и jpeg файл на исполнение запустить (что не так сложно как кажется) надежнее читать сам файл и по мета данным проверять формат. хотя думаю это заслуживает внимания если вы ДЕЙСТВИТЕЛЬНО СЕРЬЕЗНО заботитесь о безопасности

  Ответить  
 
 автор: cheops   (01.05.2011 в 10:37)   письмо автору
 
   для: parczynski   (01.05.2011 в 02:51)
 

>по мета данным проверять формат
Под мета данными что имеете в виду? И почему злоумышленник не может подделать их?

Проверка расширения удобна тем, что у вас в папку попадают только те файлы, расширения которых вам известны. Поэтому при помощи .htaccess вы полностью контролируете их поведение. Т.е. если у злоумышленника нет доступа к файловой системе - он уже ничего не поделает, чтобы он в этот файл не записал. А если у него есть доступ, ему ничего загружать через скрипт не нужно, он разместит на файловой системе все, что ему будет угодно.

  Ответить  
 
 автор: parczynski   (01.05.2011 в 14:36)   письмо автору
 
   для: cheops   (01.05.2011 в 10:37)
 

я имел ввиду по синтаксису и структуре файла проверять формат. чтобы это был не скрипт с расширением jpeg а действительно картинка. но опять же повторюсь это для критических ситуаций, в обычном случае это пожалуй действительно ни к чему т.к. в 90% случаев проще взломать хостера использующего популярное (а значит наиболее изученое с точки зрения багов ПО) чем методом тыка ковырять чей-то скрипт загрузки файлов

  Ответить  
 
 автор: cheops   (01.05.2011 в 14:43)   письмо автору
 
   для: parczynski   (01.05.2011 в 14:36)
 

Тут вот еще какая штука есть, если есть возможность так манипулировать скриптом, чтобы он включал код из произвольного файла, то можно обойтись без файлов на данном хосте. Для этого достаточно разместить код в TXT-файле (TXT будет отдан без искажений) на другом сервере и подключать его. Скрипт в JPG-файле, конечно, ничего хорошего не представляет, но если есть возможность запускать его, запрет таких файлов уже ничего не даст - злоумышленник найдет способ доставить PHP-код на сервер, используя другие хосты.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования