[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Безопасно загружать картинки этими скриптами ?
volodumir
Первый скрипт - форма загрузки:

<form enctype="multipart/form-data" action="upload.php" method="POST">
<
p>
<
input type="hidden" name="MAX_FILE_SIZE" value="1024000">
<
input type="file" name="fupload"><br>
<
input type="submit" value="Загрузить">
</
p>
</
form>

Второй скрипт - обработка формы:

<?php

print_r($_FILES ['fupload']['tmp_name']);

if ($_FILES ['fupload']['type'] == "image/jpeg")
{

$source = $_FILES['fupload']['tmp_name'];
$target = 'images' . $_FILES ['fupload']['name'];
move_uploaded_file ($source, $target);
$size = getimagesize ($target);

}
elseif ($_FILES ['fupload']['type'] == "image/gif")
{

$source = $_FILES['fupload']['tmp_name'];
$target = 'im/photo' . $_FILES ['fupload']['name'];
move_uploaded_file ($source, $target);
$size = getimagesize ($target);

}
elseif ($_FILES ['fupload']['type'] == "image/png")
{

$source = $_FILES['fupload']['tmp_name'];
$target = 'images' . $_FILES ['fupload']['name'];
move_uploaded_file ($source, $target);
$size = getimagesize ($target);

}
else
{

unlink($_FILES ['fupload']['tmp_name']);

}
?>


Генерацию имя уникального файла сделаю позже. Меня интересует только безопасность для сайта. Подскажите плиз.



Спустя 1 час, 1 минута, 14 секунд (29.08.2010 - 17:21) Белый Тигр написал(а):
На мой взгляд всё нормально. Только одно "но": для того чтоб убедиться, действительно ли вам дали картинку, нужно вначале выполнить что-нибудь типа
getimagesize($_FILES['fupload']['tmp_name'])

или
imagecreatefrompng($_FILES['fupload']['tmp_name'])

Если функция возвращает то что должна, то всё в порядке.
Для того чтоб вам не подсунули html-код в конце png-картинки (так называемое PNG-XSS), можно содержимое изображения пропустить через strip_tags и посмотреть, отличается ли результат от начального варианта. Если отличается, значит в картинку были включены теги который strip_tags вырезал. Возможно такой вариант защиты в чём-то ошибочный, но другого я не знаю.
P.S. на всякий случай проверяйте расширение у загружаемого файла.

Спустя 1 час, 2 минуты, 51 секунда (29.08.2010 - 18:24) Romms написал(а):
Цитата
На мой взгляд всё нормально.

blink.gif
возьми, загрузи файл больше за 32мегабайта(или какой там стандартный лимит)
Вот тебе и раскритие путей...
Берешь любой файлик и отправляешь его туда, изменив МИМЕ и вот сервер в твоих руках)))

ух! Погулять можно biggrin.gif

Спустя 6 минут, 21 секунда (29.08.2010 - 18:30) volodumir написал(а):
Цитата (Romms @ 29.08.2010 - 15:24)
Цитата
На мой взгляд всё нормально.

blink.gif
возьми, загрузи файл больше за 32мегабайта(или какой там стандартный лимит)
Вот тебе и раскритие путей...
Берешь любой файлик и отправляешь его туда, изменив МИМЕ и вот сервер в твоих руках)))

ух! Погулять можно biggrin.gif

Вы подскажите как защитится?

Спустя 17 минут, 32 секунды (29.08.2010 - 18:48) Romms написал(а):
1. разрешить загружать файлы только разрешений *.jpg, *.jpeg, *.png, *.gif
2. Проверять формат по МИМЕ
3. Желательно "перекодировать" в jpg за одно место экономишь и "удаляешь" всякие плохие коды в файлах

PS. в нэте инфы про ЭТО полно smile.gif

Спустя 4 минуты, 59 секунд (29.08.2010 - 18:53) volodumir написал(а):
Цитата (Romms @ 29.08.2010 - 15:48)
PS. в нэте инфы про ЭТО полно smile.gif

Дай ссылки плиз, или хоть поможи сформулировать запрос для поисковика. Я в терминах не силен.

Спустя 5 минут, 50 секунд (29.08.2010 - 18:58) Romms написал(а):
http://habrahabr.ru/blogs/php/44610/
http://habrahabr.ru/blogs/php/44615/
думаю тут инфы достаточно
Можешь поискать "загрузка изображений PHP"

Спустя 8 минут, 8 секунд (29.08.2010 - 19:06) volodumir написал(а):
Цитата (Romms @ 29.08.2010 - 15:58)
http://habrahabr.ru/blogs/php/44610/
http://habrahabr.ru/blogs/php/44615/
думаю тут инфы достаточно
Можешь поискать "загрузка изображений PHP"

Спасибо за ссылки !

Спустя 30 минут, 26 секунд (29.08.2010 - 19:37) volodumir написал(а):
Цитата (Romms @ 29.08.2010 - 15:58)
http://habrahabr.ru/blogs/php/44610/
http://habrahabr.ru/blogs/php/44615/



Если сделать так как советует этот блог, защиты будет достаточно? Вы бы стали делать так как он советует?

Спустя 9 минут, 45 секунд (29.08.2010 - 19:47) Белый Тигр написал(а):
Вообще-то про расширения я написал в конце поста. Что касается вопроса про хабр то да. Вполне.

Спустя 4 минуты (29.08.2010 - 19:51) Белый Тигр написал(а):
За совет с перегонкой всего на jpg спасибо. Идея интерсная, плюс можно всё свести к одному формату.
И, кстати, опять же по поводу расширений. Если вы загрузите что-нибудь с поддельным mime-типом, то imagecreatefrom* просто вернёт false. Именно таким образом я изначально и советовал проверять

Спустя 1 день, 13 часов, 45 минут, 25 секунд (31.08.2010 - 09:36) volodumir написал(а):
Цитата (volodumir @ 29.08.2010 - 16:37)
Цитата (Romms @ 29.08.2010 - 15:58)
http://habrahabr.ru/blogs/php/44610/
http://habrahabr.ru/blogs/php/44615/



Если сделать так как советует этот блог, защиты будет достаточно? Вы бы стали делать так как он советует?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.