Forum Webscript.Ru
Программирование => PHP => Тема начата: 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 формат";
}
-
Не уверен, что приведу лучшее вообще решение, но:
Правильно - ограничивать допустимые расширения файлов. Остальным - насильно .jpg, например. PHP-файл с расширением jpg, как правило, не страшен.
-
tserbis:
PHP-файл с расширением jpg, как правило, не страшен
в ОС Unix расширение большой роли не играет. Вы можете написать скрипт на перле, сохранить его как image.jpg, запустить, например
perl image.jpg
и он у вас успешно отработает.
-
tserbis:
PHP-файл с расширением jpg, как правило, не страшен.
не факт, мсье Дюк.
Croaker прав...
с РНР тоже самое отработает...
другое дело его еще надо вызвать таким образом :)
-
Итого, я не понял, где я не прав...
>> PHP-файл с расширением jpg, как правило, не страшен.
-
Nicca
ИМХО - проверяй и то (image/pjpeg), и другое (.jpg)...
-
По-моему, проще просто проверить загруженный файл на тип изображения.
int exif_imagetype ( string filename)
если возвращает, скажем, IMAGETYPE_GIF или IMAGETYPE_JPEG, то это, скорее всего - не php.
-
Четко знать, что можно загружать, и какие особенности загружаемых файлов, по которым можно однозначно определить тип файла.
Явно запретить все, что не подходит под описание файла. Явно разрешить все, что подходит.
Syrinx:
exif_imagetype
а чего собственно при обсуждении аплоада упираться в то, что будет аплодиться именно картинка? А текстовый файл мне уже зааплодить нельзя? Архив? Вордовый документ?
-
Yukko:
а чего собственно при обсуждении аплоада упираться в то, что будет аплодиться именно картинка? А текстовый файл мне уже зааплодить нельзя? Архив? Вордовый документ?
Был задан конкретный вопрос, из которого следовало, что будет аплоудится именно картинка. Если же нужно зааплоудить что-то другое, ясное дело, нужно использовать (или писать самому) соответствующую функцию проверки.
-
А попробуй проверять размеры изображения через ф-ции GD