Forum Webscript.Ru

Программирование => PHP => Тема начата: Nicca от 13 Августа 2004, 18:38:12

Название: Безопасность аплоада
Отправлено: Nicca от 13 Августа 2004, 18:38:12
Такой вопрос: можна ли обойти проверку на тип файла который ниже у меня в коде? И безопасный ли этот код(имеется в виду чтобы нельзя было загрузить юзеру другой тип файла(пхп например)

$file = $_FILES[\'img\'.$cur][\'name\'];
$type = $_FILES[\'img\'.$cur][\'type\'];
$size = $_FILES[\'img\'.$cur][\'size\'];
$temp = $_FILES[\'img\'.$cur][\'tmp_name\'];
if (($type==\'image/pjpeg\') or ($type==\'image/gif\'))
  {
    if ($size<512000)
     {
       move_uploaded_file($temp, \'../photos/news/\'.$file);
       rename(\'../photos/news/\'.$file,\'../photos/news/\'.$name);
     }
    else { echo "Слишком большой размер файла"; }      
  }
else
 {
  echo "Неправильный тип файла. Можно только gif u jpg формат";
 }
Название: Безопасность аплоада
Отправлено: tserbis от 13 Августа 2004, 18:41:52
Не уверен, что приведу лучшее вообще решение, но:
Правильно - ограничивать допустимые расширения файлов. Остальным - насильно .jpg, например. PHP-файл с расширением jpg, как правило, не страшен.
Название: Безопасность аплоада
Отправлено: Croaker от 13 Августа 2004, 19:26:37
Цитировать
tserbis:
PHP-файл с расширением jpg, как правило, не страшен


в ОС Unix расширение большой роли не играет. Вы можете написать скрипт на перле, сохранить его как image.jpg, запустить, например

perl image.jpg

и он у вас успешно отработает.
Название: Безопасность аплоада
Отправлено: ThE0ReTiC от 13 Августа 2004, 19:39:47
Цитировать
tserbis:
PHP-файл с расширением jpg, как правило, не страшен.

не факт, мсье Дюк.
Croaker прав...
с РНР тоже самое отработает...
другое дело его еще надо вызвать таким образом :)
Название: Безопасность аплоада
Отправлено: tserbis от 14 Августа 2004, 13:48:14
Итого, я не понял, где я не прав...
>> PHP-файл с расширением jpg, как правило, не страшен.
Название: Безопасность аплоада
Отправлено: CGVictor от 14 Августа 2004, 16:41:36
Nicca
ИМХО - проверяй и то (image/pjpeg), и другое (.jpg)...
Название: Безопасность аплоада
Отправлено: Syrinx от 14 Августа 2004, 22:34:03
По-моему, проще просто проверить загруженный файл на тип изображения.

int exif_imagetype ( string filename)

если возвращает, скажем, IMAGETYPE_GIF или IMAGETYPE_JPEG, то это, скорее всего - не php.
Название: Безопасность аплоада
Отправлено: Yukko от 14 Августа 2004, 22:54:36
Четко знать, что можно загружать, и какие особенности загружаемых файлов, по которым можно однозначно определить тип файла.
Явно запретить все, что не подходит под описание файла. Явно разрешить все, что подходит.

Цитировать
Syrinx:
exif_imagetype

а чего собственно при обсуждении аплоада упираться в то, что будет аплодиться именно картинка? А текстовый файл мне уже зааплодить нельзя? Архив? Вордовый документ?
Название: Безопасность аплоада
Отправлено: Syrinx от 15 Августа 2004, 10:50:10
Цитировать
Yukko:
а чего собственно при обсуждении аплоада упираться в то, что будет аплодиться именно картинка? А текстовый файл мне уже зааплодить нельзя? Архив? Вордовый документ?


Был задан конкретный вопрос, из которого следовало, что будет аплоудится именно картинка. Если же нужно зааплоудить что-то другое, ясное дело, нужно использовать (или писать самому) соответствующую функцию проверки.
Название: Безопасность аплоада
Отправлено: sublimity от 15 Августа 2004, 12:34:48
А попробуй проверять размеры изображения через ф-ции GD