<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) Белый Тигр написал(а):
На мой взгляд всё нормально. Только одно "но": для того чтоб убедиться, действительно ли вам дали картинку, нужно вначале выполнить что-нибудь типа
или
Если функция возвращает то что должна, то всё в порядке.
Для того чтоб вам не подсунули html-код в конце png-картинки (так называемое PNG-XSS), можно содержимое изображения пропустить через strip_tags и посмотреть, отличается ли результат от начального варианта. Если отличается, значит в картинку были включены теги который strip_tags вырезал. Возможно такой вариант защиты в чём-то ошибочный, но другого я не знаю.
P.S. на всякий случай проверяйте расширение у загружаемого файла.
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 написал(а):
Цитата |
На мой взгляд всё нормально. |
возьми, загрузи файл больше за 32мегабайта(или какой там стандартный лимит)
Вот тебе и раскритие путей...
Берешь любой файлик и отправляешь его туда, изменив МИМЕ и вот сервер в твоих руках)))
ух! Погулять можно
Спустя 6 минут, 21 секунда (29.08.2010 - 18:30) volodumir написал(а):
Цитата (Romms @ 29.08.2010 - 15:24) | ||
возьми, загрузи файл больше за 32мегабайта(или какой там стандартный лимит) Вот тебе и раскритие путей... Берешь любой файлик и отправляешь его туда, изменив МИМЕ и вот сервер в твоих руках))) ух! Погулять можно |
Вы подскажите как защитится?
Спустя 17 минут, 32 секунды (29.08.2010 - 18:48) Romms написал(а):
1. разрешить загружать файлы только разрешений *.jpg, *.jpeg, *.png, *.gif
2. Проверять формат по МИМЕ
3. Желательно "перекодировать" в jpg за одно место экономишь и "удаляешь" всякие плохие коды в файлах
PS. в нэте инфы про ЭТО полно
2. Проверять формат по МИМЕ
3. Желательно "перекодировать" в jpg за одно место экономишь и "удаляешь" всякие плохие коды в файлах
PS. в нэте инфы про ЭТО полно
Спустя 4 минуты, 59 секунд (29.08.2010 - 18:53) volodumir написал(а):
Цитата (Romms @ 29.08.2010 - 15:48) |
PS. в нэте инфы про ЭТО полно |
Дай ссылки плиз, или хоть поможи сформулировать запрос для поисковика. Я в терминах не силен.
Спустя 5 минут, 50 секунд (29.08.2010 - 18:58) Romms написал(а):
http://habrahabr.ru/blogs/php/44610/
http://habrahabr.ru/blogs/php/44615/
думаю тут инфы достаточно
Можешь поискать "загрузка изображений PHP"
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. Именно таким образом я изначально и советовал проверять
И, кстати, опять же по поводу расширений. Если вы загрузите что-нибудь с поддельным mime-типом, то imagecreatefrom* просто вернёт false. Именно таким образом я изначально и советовал проверять
Спустя 1 день, 13 часов, 45 минут, 25 секунд (31.08.2010 - 09:36) volodumir написал(а):
Цитата (volodumir @ 29.08.2010 - 16:37) | ||
Если сделать так как советует этот блог, защиты будет достаточно? Вы бы стали делать так как он советует? |