Я точно знаю, что ни один браузер не позволяет выполнять JavaScript в атрибуте src=
тега изображения. Если какой-либо браузер сделал это, то это его уязвимость в браузере, для него должен быть выдан номер CVE, и он будет исправлен. Редактировать: I have tested this against the most recent IE8, chrome and firefox, and they have all patched this issue.
Если вы по-прежнему уязвимы для этого, у вас есть НАМНОГО больших проблем в ваших руках, потому что злоумышленник наиболее вызывающе сможет выложить снаряд на ваш ящик.
Однако, <img src=img.jpg onload="alert(/xss/)"/>
может использоваться для выполнения JavaScript. Таким образом, если злоумышленник может контролировать часть источника, он может ввести строку, подобную этой: src="fake.jpg" onload="alert(/xss/)"
. Именно поэтому htmlspeicalchars($image_location,ENT_QUOTES);
следует использовать вместо htmlspecialchars($image_location)
. Другой подход заключается в использовании Html Purifier , который может автоматически удалять подобный javascript.
Если вы хотите защитить свой собственный браузер от XSS, вам следует использовать noscript.
Допускается использование тегов изображений для использования XSRF на основе GET. Это особенно плохо, если программное обеспечение выполняет только проверку реферера. Тем не менее, большинство приложений используют основанную на токене защиту от xsrf, которая защищает запросы от этой атаки. Тем не менее, ваш сайт может быть использован для атаки на сайты других людей с помощью поддельных запросов GET, но это не очень серьезная угроза. Одним из способов защиты было бы убедиться, что в этом месте действительно есть изображение, и отклонить тег img, если изображение не существует.