![>](style_images/1/nav_m.gif)
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.223.172.199] |
![]() |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
![]() |
|
|
как сделать чтобы файлы больше 100 кб и форматы отличные от gif, png, jpg на сервер не закачивались
![]() ![]() if($_FILES[file][size]<102400) { if($_FILES[file][type]=="gif"||$_FILES[file][type]=="png"||$_FILES[file][type]=="jpg") { //код закачки на сервак } } вот этот вот код при файле 30кб jpg не работатет ![]() |
Сообщ.
#2
,
|
|
|
Цитата sanweb @ вот этот вот код при файле 30кб jpg не работатет http://phpfaq.ru/debug http://php.net/getimagesize Добавлено Цитата sanweb @ Садись, два. К тому времени, когда скрипт запущен - файл УЖЕ закачан на сервак. //код закачки на сервак |
Сообщ.
#3
,
|
|
|
Цитата SiMM @ он закачан в куда-то в /tmp, и сдохнет после завершения скрипта ...К тому времени, когда скрипт запущен - файл УЖЕ закачан на сервак. В общем с известной натяжкой "кодом закачки на сервак" можно считать move_uploaded_file. Добавлено sanweb, подробнее. print_r($_FILES); хотя б глянь... |
Сообщ.
#4
,
|
|
|
он в темп закачан!!!!
да какая разница какой код! мне нужно чтобы код обрабатывался при соблюдении условий! if($_FILES[file][type]=="gif"||$_FILES[file][type]=="png"||$_FILES[file][type]=="jpg") заменю на getimagesize |
Сообщ.
#5
,
|
|
|
sanweb, с тебя следующее:
- вывод ошибок/варнингов, если есть - вывод функции print_r($_FILES) - кавычки в индексах массива тогда будем говорить дальше. M И внимательное курение http://www.php.net/manual/ru/features.file-upload.php ибо там все написано!!! |
Сообщ.
#6
,
|
|
|
Цитата sanweb @ $_FILES[file][type]=="jpg" ![]() Цитата $_FILES['userfile']['type'] Mime-тип файла, в случае, если браузер предоставил такую информацию. Пример: "image/gif". Добавлено Цитата Pr0[)!9Y @ если браузер предоставил такую информацию Так что неплохо бы самому отрезать расширение и проверять. Цитата sanweb @ Заче вложенность плодить для такой задачи? Разница то небольшая, но так удобнее if($_FILES[file][size]<102400 AND ($_FILES[file][type]=="gif"||$_FILES[file][type]=="png"||$_FILES[file][type]=="jpg")) { //код закачки на сервак } Добавлено http://php.net/pathinfo Добавлено Еще вариант: ![]() ![]() preg_match('/.(gif|png|jpg|jpeg)/i',$_FILES['userfile']['name']) |
Сообщ.
#7
,
|
|
|
сменя закрытие темы
все получилось гетимыджсайзом! всем спасибо! ![]() а в ифе при проверке типа я писал image/jpg это я для краткости написал только расширение |
Сообщ.
#8
,
|
|
|
Это как? Если размер определился то картинка иначе нет, так чтоли?
Изврат. |
Сообщ.
#9
,
|
|
|
размер определяю как и раньше а тип гетимжсайзом!
|
Сообщ.
#10
,
|
|
|
Расширение всё равно проверять надо. Если файл доступен по HTTP и лежит в папке, где отрабатываются PHP-скрипты.
Добавлено Либо менять его принудительно. |
Сообщ.
#11
,
|
|
|
Цитата Нестыковочка...и форматы отличные от gif, png, jpg на сервер не закачивались... The getimagesize() function will determine the size of any GIF, JPG, PNG, SWF, SWC, PSD, TIFF, BMP, IFF, JP2, JPX, JB2, JPC, XBM, or WBMP... Такая проверка извращение по-моему, зная заведомо что это не картинка прогонять ее через такую обработку...нехорошо. Вроде как она для этого не предназначена ![]() Добавлено Цитата SiMM @ Хм, не поверил - решил проверить.Расширение всё равно проверять надо. Если файл доступен по HTTP и лежит в папке, где отрабатываются PHP-скрипты. И действительно! Дописываем в гиф файл пхп код, переименовываем в .php и о чудо! Он прекрасно исполняется и проходит проверку с помощью getimagesize. Вот и уязвимость... |
Сообщ.
#12
,
|
|
|
ну вопервых проверку проходят только картинки
вовторых форма лежит в админке в третих это форма выбора файла для аттача в емайл в четвертых я никогда не сохранял бы такие картинки в одной папке с пхп скриптами котлеты отдельно мухи отдельно! PS: а каким образом в гиф файл дописать пхп код? тоесть открываеш гиф в блокноте дописываеш пхп код переименовываеш в пхп и скрипт это воспринимает как рисунок да еще и исполняет? крутооооооо..... тааак а какие еще баги в пхп есть? ![]() |
Сообщ.
#13
,
|
|
|
Цитата sanweb @ Ты никогда не знаешь что закачает пользователь! (он по определению хакер)ну вопервых проверку проходят только картинки Цитата sanweb @ Как только хакер попал в админку, он ищет чего бы такого сотворить (выполнить произвольный код)вовторых форма лежит в админке Цитата sanweb @ А ты их сохраняешь куда? В папку (например images), и почему то я уверен что в этой папке наверняка скрипты тоже имеют право исполнятся в четвертых я никогда не сохранял бы такие картинки в одной папке с пхп скриптами ![]() Цитата sanweb @ По секрету и только тебе PS: а каким образом в гиф файл дописать пхп код? ![]() ![]() ![]() notepad |
Сообщ.
#14
,
|
|
|
и как сделать чтобы скрипт закачки такие видоизмененные файлы не исполнял?
закачивать их в папку где скрипты не имеют право на исполнение или как? этож тогда можно ломануть любой сайт где есть форма закачки! а эта фигня только с гифами? с какими графическими расширениями такое еще моно проделать? |
Сообщ.
#15
,
|
|
|
Цитата sanweb @ а какие еще баги в пхп есть? Была тут тема разок, но ее благополучно забили ![]() 2Moders: Может создадим топик с багами идырами распросраненными? И не будем пинать мол в нете много материала? И все это ламерство и гуру все знают. Для новичков и то полезно будет. Добавлено Цитата sanweb @ Предполагаю что с любыми, потому что чаще всего информация о изображении сосредоточена в начале и функция не смотрит на окончание файла.с какими графическими расширениями такое еще моно проделать? Цитата sanweb @ этож тогда можно ломануть любой сайт где есть форма закачки! а эта фигня только с гифами? Навряд ли, потому что вряд ли на многих сайтах есть такая некорректная (имхо) проверка. Цитата sanweb @ и как сделать чтобы скрипт закачки такие видоизмененные файлы не исполнял? Проверять расширение самостоятельно ![]() ![]() preg_match('/.(gif|png|jpg|jpeg)/i',$_FILES['userfile']['name']) pathinfo() |