|
|
|
| Здравствуйте. Я пишу галерею, в которую пользователи смогут добавлять изображения двумя способами: их загрузкой на сайт и добавлением внешней ссылки на картинку с другого сайта. В первую очередь я озадачилась проблемой безопасности этих процессов, но практически не нашла никакой полезной информации.
Понятно, что чтобы защититься от загрузки php-файлов, надо проверять расширения при условии, что php-скрипты в изображениях не выполняются. Но как быть с javascript? Я так поняла из прочитанного, что скрипт может быть в самом файле и в метаданных. Как удалить его и от туда, и от туда? Если что, изменять размер картинки бы не хотелось, хотелось бы качественные изображения. Кроме того, изменение размера, наверное, не повлияет на метаданные.
И второй вопрос. Как быть со вставкой изображения с внешнего сайта? Наверное, надо применить htmlspecialchars к адресу и посмотреть, чтобы он начинался с хттп и заканчивался расширением. Но как, опять же, быть с javascript? Ведь к изменению изображения я доступ не смогу иметь.
Заранее спасибо. | |
|
|
|
|
|
|
|
для: Блондюсик
(15.12.2011 в 18:28)
| | >Но как быть с javascript? Я так поняла из прочитанного, что скрипт может быть в самом файле и в
>метаданных. Как удалить его и от туда, и от туда?
Имеется в виду в картинке? Ну во-первых его туда довольно трудно поместить, а во вторых с чего бы это ему выполняться... Нет там конечно пытаются пару уязвимостей использовать на уровне операционной системы. Но это настолько прототипные системы и настолько там мороки много, да и закрывали помоему эти дыры... У вас информация откуда, а главное за какой год? | |
|
|
|
|
|
|
|
для: cheops
(15.12.2011 в 19:02)
| | http://raz0r.name/articles/bezopasnost-zagruzhaemyx-izobrazhenij/
http://www.xaker.name/forvb/showthread.php?t=10833
Датируется 2008 годом. Там в последней статье написано про IE7, им ещё пользуются.
В метаданные (название, какой камерой снято и т.д.) вообще вставить яваскрипт очень легко, но, должна сказать, когда я попыталась вставить туда алерт, то у меня почему-то ничего не сработало.
Даже не знаю, может, я просто паникёр? | |
|
|
|
|
|
|
|
для: Блондюсик
(15.12.2011 в 19:19)
| | Тут предельно просто, Internet Explorer - это дыра, люди которые им пользуются это осознают. XSS - это не взлом сайта, это взлом пользователя, т.е. его cookie могут украсть (а это как раз забота браузера, следить, чтобы их не воровали). Если вы сами будете пользоваться InternetExplorer, а в cookie у вас будет пароль от всего сайта, злоумышленник может получить доступ ко всему сайту. Если вы сидите под Opera или каким-то другим браузером, вам ничего не угрожает. А IE7, ну антивирусные компании уже лет 5-6 говорят, чтобы им не пользовались ни при каких условиях, те кто продолжает это делать, ну не сломают их на вашем сайте, сломают на другом.
>Даже не знаю, может, я просто паникёр?
Не совсем, к людям нужно относиться по-доброму и это нормально (не нормально обратное поведение). Если вам их жалко, просто не храните в cookie ничего важного и не позволяйте менять пароль без явного ввода старого и вообще на все критичные действия (например, с деньгами) следует требовать повторный ввод пароля. Но вообще оберегать пользователя нужно до определенного порога, дальше которого вам это будет уже накладно. | |
|
|
|
|
|
|
|
для: Блондюсик
(15.12.2011 в 18:28)
| | Спасибо!
Но всё-таки, если кто-нибудь что-нибудь знает про те фильтры, о которых упоминалось в этих статьях, скажите. | |
|
|
|
|
|
|
|
для: Блондюсик
(15.12.2011 в 19:44)
| | [поправлено модератором] | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.12.2011 в 02:34)
| | Это про пхп, а не про яваскрипты =/ | |
|
|
|
|
|
|
|
для: Блондюсик
(16.12.2011 в 08:40)
| | У Вас предусматривается два варианта:
1) Загрузка на сервер
2)Показ изображения по ссылке
Для первого случая как раз статья, ссылку на которую я дал. Всё таки ознакомьтесь с её содержанием.
Возьмём любое изображение, например .gif
Откроем в блокноте и допишем в конец файла
<?php
echo phpinfo();
?>
<script type="text/javascript">
alert('hack')
</script>
|
Если изменить расширение на php, то при загрузке изображение в браузере выполнятся скрипты и getimagesize() при проверке не выдаст ошибки.
Я пробовал обработать такие изображения функциями для работы с графикой, при этом дописаный код удалялся из файла. Не помешает добавить запрет на выполнение скриптов в директории, в которой хранятся изображения.
Из этого я понял, что если даже файл пройдёт проверку функцией getimagesize(), то надо его всё равно обработать функциями работы с графикой, не изменяя размера.
А если для второго случая, то попробуйте отдавать изображение не напрямую по ссылке, а через скрипт, опять же обработав функциями.
p.s. цитата из статьи
Стоит добавить, что желательно сделать приведение файла к конкретному формату,
например jpeg.
При приведении метаданные картинки (насколько мне известно) потеряются, обеспечив практически гарантируемую безопастность.
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(16.12.2011 в 12:19)
| | Спасибо! А какими функциями можно обрабатывать, не изменяя размера?
И, плюс, метаданные картинки потеряются, если приводить jpg к jpg? | |
|
|
|
|
|
|
|
для: Блондюсик
(17.12.2011 в 08:51)
| | > А какими функциями можно обрабатывать, не изменяя размера?
функции для работы с графикой
>И, плюс, метаданные картинки потеряются, если приводить jpg к jpg?
пробуйте, экспериментируйте.... | |
|
|
|
|
|
|
|
для: Блондюсик
(15.12.2011 в 18:28)
| | Помогите, если не сложно.
Создаю файл, открываю в блокноте, пишу: <?php echo '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!';die('');?><script>alert();</script> - в конец файла и в метаданные. Вставляю в файл, открываю и максимум, чего добиваюсь - это сообщение ие7 и 8 о том, что используется яваскрипт при просмотре информации о картинке. Сам алерт не выполняется, даже если разрешить его выполнение.
А должен выполняться алерт и показываться надпись "!!!!!!!!!!!..."
Проблемы нет или у меня кривые руки? Может, зависит от версии php и какой-нибудь там подверсии ие7? Если что, версия пхп - 5.2 | |
|
|
|
|
|
|
|
для: Блондюсик
(18.12.2011 в 17:54)
| | ><?php echo '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!';die('');?>
после die() ни чего выполняться не будет.
файл с каким расширением, php?
вот если взять картинку, открыть в блокноте, дописать код, сохранить с расширением "php", то код выполнится при просмотре в браузере. Дописать вредоносный код в файл этого мало, надо чтобы от ещё и выполнился, а с расширением файла "gif" или "jpg" ни чего выполняться не будет.
но Вам то нужно чтобы не исполнялся код....
p.s. перечитайте ещё раз, внимательно, первую часть статьи, ссылку на которую я давал | |
|
|
|
|