Загрузка исполняемого кода через теги <img>или <a>? - PullRequest
5 голосов
/ 10 ноября 2009

Я работаю над приложением, которое позволит людям вводить произвольные URL-адреса, которые будут включены в теги <a href="ARBITRARY URL"> и <img src="ARBITRARY URL" />.

На какие угрозы безопасности я смотрю?

Приложение написано на PHP, и единственная мера безопасности, которую я сейчас выполняю, - это использование PHP-функции htmlentities () для входного URL-адреса перед его отправкой в ​​виде HTML. Я также проверяю, чтобы текст URL начинался либо с http://, либо с https://, но я не знаю, если это что-то происходит, с точки зрения безопасности.

Что еще я должен сделать для обеспечения безопасности моих конечных пользователей?

Ответы [ 7 ]

3 голосов
/ 10 ноября 2009

Можно создать изображение, которое также является допустимым файлом javascript, и заставить браузер выполнить его. Смотри http://www.thinkfu.com/blog/?p=15

Изображения SVG (изображение mime-типа / svg + xml) могут содержать JavaScript. Смотри http://www.w3.org/TR/SVG/interact.html

3 голосов
/ 10 ноября 2009
2 голосов
/ 10 ноября 2009

Вы должны выполнять санитарную обработку всегда, теги img уязвимы для межсайтовых скриптов

2 голосов
/ 10 ноября 2009

Вы хотели бы прочитать о XSS (межсайтовый скриптинг) и XSRF (подделка межсайтового запроса)

EDIT : Как указывает ryeguy , вы можете в значительной степени скопировать и вставить любой из примеров в XSS (Cross Site Scripting) шпаргалку и искать лучший способ предотвратить их соответственно.

1 голос
/ 10 ноября 2009
1 голос
/ 10 ноября 2009

Кроме того, можно вставлять целые изображения в URL, используя встроенные данные в новых браузерах. Возможно, что-то можно сделать через него, но это потребует зияющей дыры в безопасности на стороне браузера, и я не знаю, как санировать что-то подобное.

Может быть, вы просто хотите ограничить доступ к определенным доменам или проверить, существует ли изображение физически? Это уже может сильно помочь.

0 голосов
/ 11 ноября 2009

В дополнение к отличным ответам на данный момент, шпаргалка xss на самом деле не учитывает атрибуты событий, такие как onmouseover onhover и т. Д. Все они специально созданы для того, чтобы кто-то мог запускать некоторый javascript, когда что-то происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...