Это безопасно?


Интересно, всегда ли атрибуты href и src в тегах <a> и <img> безопасны для атак XSS, если они начинаются с http:// или https://.

Например, можно ли каким-либо образом добавить javascript: ... к атрибутам href и src для выполнения кода?

Игнорирование независимо от того, является ли целевая страница, например, фишинговым сайтом, или <img src=...> вызывает ужасно неприятный запрос HTTP GET.

Предыстория: Я обрабатываю текст с помощью markdown, а затем я очищаю полученный HTML (используя Jshtmlsanitizer от Google Caja). Некоторый пример кода в Google Caja предполагает, что все href и src, которые начинаются с http:// или https://, безопасны - интересно, безопасно ли использовать этот пример кода.

С уважением,
Кай-Магнус

Author: KajMagnus, 2011-03-30

1 answers

Разрешение только протокола http(s) предотвращает запуск javascript, но они все равно могут быть использованы в вредоносных целях. Рассмотрим следующее:

<img src="http://your.website.com/changepassword.php?newpass=hacked123" />

Разрешение пользователям встраивать контент с внешних веб-сайтов всегда рискованно, но иногда неизбежно. Убедившись, что ваши скрипты хорошо защищены от XSS, подобных приведенному выше, вы сделаете свой сайт более надежным, если не на 100 % защищенным от хакеров.

РЕДАКТИРОВАТЬ: Вот довольно полная шпаргалка XSS, хотя немного постарел. Один важный момент, взятый из шпаргалки, о котором я забыл упомянуть, заключается в том, что вы также должны избегать кавычек и/или знаков >, чтобы предотвратить такие URL-адреса, как http://legiturl.com"><script src="http://mal.icio.us/attack.js">.

 3
Author: Kaivosukeltaja, 2012-06-28 14:34:26