Comments 57
БезопасТная = false;
Безопасная = true;
Безопасная = true;
+1
Отличный цикл статей на очень актуальную проблему.
Пракически каждый второй самописный проект с формой заливки изображения имеет подобные уязвимости, как это ни печально :(
Пракически каждый второй самописный проект с формой заливки изображения имеет подобные уязвимости, как это ни печально :(
0
UFO just landed and posted this here
Если у изображения будет расширение php5 или какое-то другое неучтенное в blacklist, то скрипт успешно выполнится. Имхо намного безопаснее использовать whitelist: array('gif',jpg, ...)
+3
Файлы с расширением php5 — выполняются? Первый раз слышу. Блеклист и whitelist — оба плохих решения, лучше всего как я сказал присуждать расширение файла автоматически, на основе его проверенного типа.
-5
php5, php4, php3 исполняются — бывают всякие настройки
0
Если вам нужно сделать загрузку картинок, то лучше использовать белый список расширений, если же просто загрузку аттачей, то блеклист исполняемых расширений.
0
добавляем в Apache2\conf\httpd.conf
AddType application/x-httpd-php .php5
Расширение может быть любым, хоть jpg и gif :)
AddType application/x-httpd-php .php5
Расширение может быть любым, хоть jpg и gif :)
+1
в мемориз :)
0
Вообще надо сразу делать resize картинки, в итоге если бы это был скрипт — будет ошибка, если ошибка — удаляем.
Даже если будет замаскирован скрипт, то «внутренности» файла сильно изменятся и соответсвенно скрипт не сработает.
Это так сказать самый простой вариант «борьбы»
Даже если будет замаскирован скрипт, то «внутренности» файла сильно изменятся и соответсвенно скрипт не сработает.
Это так сказать самый простой вариант «борьбы»
+1
Ну и почему минус?
Аргументы можно?
Я опущу ошибки в путях сохранения файла (по умолчанию надо «разбирать» get post cookie и проверять)
При resize файл изменяется содержимое файла — если скрипт, он просто не заработает, так как тоже подвергнется видоизменениям. Если функция resize выдаст ошибку — просто удаляем файл.
Ну и почему минус? Троллим?
Аргументы можно?
Я опущу ошибки в путях сохранения файла (по умолчанию надо «разбирать» get post cookie и проверять)
При resize файл изменяется содержимое файла — если скрипт, он просто не заработает, так как тоже подвергнется видоизменениям. Если функция resize выдаст ошибку — просто удаляем файл.
Ну и почему минус? Троллим?
-1
объясните плиз, как проверять Content-Type не изображения (скажем .avi) в случае подмены MIME-типа?
0
Обычно с помощью тех модулей, которые отвечают за обработку данного типа. В случае avi это будет ffmpeg.
Хотя вроде я видел специальные библиотеки для вычисления MIME-типа файлов. Но может ошибаюсь.
Хотя вроде я видел специальные библиотеки для вычисления MIME-типа файлов. Но может ошибаюсь.
0
ну в случае использования ffmpeg понятно — там можно тупо конвертировать файл при загрузке и вредоносный код перестает существовать.
интересно тогда знать, ну допустим подменил я mime-тип засунув пхпшный файл с раширеним .avi.
неужели его открытие в браузере вызовет исполнение php-кода?
интересно тогда знать, ну допустим подменил я mime-тип засунув пхпшный файл с раширеним .avi.
неужели его открытие в браузере вызовет исполнение php-кода?
0
Если .avi — нет, т.к. этот формат не будет выполним. А вот если ваш avi имеет расширение php то да, выполнится.
+1
прочитал последний абзац второй главы и нашел ответ на вторую часть вопроса.
получается единственно безопасное для видео файлов, помимо всех проверок — конвертировать их при аплоаде.
получается единственно безопасное для видео файлов, помимо всех проверок — конвертировать их при аплоаде.
0
Для PHP есть расширение «fileinfo», прекрасно работающее под *nix'ами
0
У вас там «загрузка фалов» в первом предложении.
+2
А можно просто запретить выполнение PHP-скриптов из директории uploads директивой в .htaccess:
Вот и все. Только, конечно, стоит запретить перезаписть .htaccess (;
php_flag engine off
Вот и все. Только, конечно, стоит запретить перезаписть .htaccess (;
+5
Можно было бы просто написать — никогда не делайте инклуд пользовательских данных. Проблема, имхо, высосана из неправильного архитектурного решения.
0
Вчера нарыл: www.getid3.org/ getID3() is a PHP script that extracts useful information from MP3s & other multimedia file formats.
Reads & parses (to varying degrees):
* AIFF
* APE tags: v1 and v2
* ASF: ASF, Windows Media Audio (WMA), Windows Media Video (WMV)
* AU
* BMP
* Bonk
* CD-audio (*.cda)
* FLAC
* Flash
* GIF
* ID3v1 & ID3v1.1
* ID3v2.4, ID3v2.3, ID3v2.2
* ISO-9660 CD-ROM image (directory structure)
* JPEG
* LA (Lossless Audio)
* LPAC
* Lyrics 3: v1 & v2
* Lyrics3 v1 & v2
* MIDI
* Monkey's Audio
* MP3/MP2/MP1
* MPC / Musepack
* MPEG video
* NSV (Nullsoft Streaming Video)
* Ogg (Vorbis, OggFLAC, Speex)
* OptimFROG
* PNG
* Quicktime
* RealAudio, RealVideo
* RIFF: AVI/WAV
* Speex
* VOC
* VQF
* WavPack
* ZIP (directory structure)
Reads & parses (to varying degrees):
* AIFF
* APE tags: v1 and v2
* ASF: ASF, Windows Media Audio (WMA), Windows Media Video (WMV)
* AU
* BMP
* Bonk
* CD-audio (*.cda)
* FLAC
* Flash
* GIF
* ID3v1 & ID3v1.1
* ID3v2.4, ID3v2.3, ID3v2.2
* ISO-9660 CD-ROM image (directory structure)
* JPEG
* LA (Lossless Audio)
* LPAC
* Lyrics 3: v1 & v2
* Lyrics3 v1 & v2
* MIDI
* Monkey's Audio
* MP3/MP2/MP1
* MPC / Musepack
* MPEG video
* NSV (Nullsoft Streaming Video)
* Ogg (Vorbis, OggFLAC, Speex)
* OptimFROG
* PNG
* Quicktime
* RealAudio, RealVideo
* RIFF: AVI/WAV
* Speex
* VOC
* VQF
* WavPack
* ZIP (directory structure)
+2
а зачем вообще использовать имя присланного файла, между прочим это тоже баг. move_uploaded_file перезапишет существующий файл с таким же именем. нужно генерить уникальное имя и цеплять к нему нужное расширение
+1
выше описаные методы работать не будут, в случае kestas.kuliukas.com/JavaScriptImage/forumlogo2.png (Открываем в ИЕ), поэтому делаю ресайз пикчи на 1 пиксель, при желании можно потом на один пиксель увеличить, тогда JavaScript рушится.
0
Точно такая же ситуация в ИЕ с PDF-ом, www.splitbrain.org/_static/IEtests/test.pdf (опять же в ИЕ) все остальные браузеры вроди нормально.
0
Имя генерируем уникальное — в папке запрещаем выполнение скриптов. Вроде все.
А как могут модифицировать изображение, что оно скриптом станет?
По идее можно на сервере настроит, что хоть pdf как php обрабатываться станет.
А как могут модифицировать изображение, что оно скриптом станет?
По идее можно на сервере настроит, что хоть pdf как php обрабатываться станет.
0
мда, читаю это всё и думаю, толи php разработчики ничего не знают кроме php, толи они и самого php не знают.
Ну да ладно, для начинающих сойдёт.
Ну да ладно, для начинающих сойдёт.
-1
помоему проще и надежней загружать картинки в папочку с .htaccess который запрещает доступ, и выдавать для просмотра картинки через скрипт…
0
Вопрос, а почему нельзя совсем просто поступить и допускать файлы только с расширениями из white list, не проверяя содержание? Ну и пусть внутри будет находиться вредоносный код, если файл будет с расширением .jpeg, например, то ведь всё равно ничего не выполнится?
0
ну а если тебе закинут в папочку htaccess с командой которая будет говорить выполнять jpeg как php? :)
-2
хорошая статья. пойду нафиг выкорчую php на сервере.
0
Как видно, переводчик PHP игнорирует двоичные данных в…
интерпритатор, компилятор, интерпретирующий компилятор, пожалуйста, не обзывайте «переводчик»
а вообще по статье хорошо, но не все. что конкретно картинок касается, то нужно работать по схеме разрешено разрешенное, а не незапрещенное, тоесть пере конвертировать картинку
0
Это деятельность электронного переводчика. Спасибо, поправил.
0
Вообще-то PHP — транслирующий интерпретатор, но никак не компилятор.
0
Нужен не блек лист, а список только разрешённых расширений.
+2
у меня в папке куда грузятся файлы, кроме общей проверки, еще .htaccess стоит, который всякие cgi скипты в плейн/текст превращает…
0
UFO just landed and posted this here
Sign up to leave a comment.
Безопасная загрузка изображений на сервер. Часть первая