
Межсайтовый скриптинг (XSS) — это техника атаки, которая заключается в отражении кода, предоставленного атакующим, в экземпляр браузера пользователя. Экземпляром браузера может быть стандартный веб-браузер или объект браузера, встроенный в программный продукт, например браузер внутри WinAmp, RSS-ридер или почтовый клиент. Сам код обычно написан на HTML/JavaScript, но также может распространяться на VBScript, ActiveX, Java, Flash или любую другую технологию, поддерживаемую браузером. Когда атакующий заставляет браузер пользователя выполнить его код, этот код будет выполняться в контексте безопасности (или зоне) веб-сайта, на котором он размещён. Обладая таким уровнем привилегий, код может читать, изменять и передавать любые конфиденциальные данные, доступные браузеру. Пользователь, подвергшийся межсайтовому скриптингу, может получить угнанную учётную запись (кража файлов cookie), перенаправление браузера в другое место или, возможно, демонстрацию мошеннического контента, доставляемого посещаемым им веб-сайтом. Атаки с помощью межсайтового скриптинга по сути подрывают доверительные отношения между пользователем и веб-сайтом. Приложения, использующие экземпляры объектов браузера, которые загружают содержимое из файловой системы, могут выполнять код в зоне локальной машины, что позволяет скомпрометировать систему.
Существует три типа атак с помощью межсайтового скриптинга: непостоянные (non-persistent), постоянные (persistent) и основанные на DOM (DOM-based). Непостоянные атаки и атаки, основанные на DOM, требуют, чтобы пользователь либо перешёл по специально созданной ссылке, содержащей вредоносный код, либо посетил вредоносную веб-страницу с веб-формой, которая при отправке на уязвимый сайт запускает атаку. Использование вредоносной формы часто происходит, когда уязвимый ресурс принимает только HTTP POST-запросы. В таком случае форма может быть отправлена автоматически, без ведома жертвы (например, с помощью JavaScript). После нажатия на вредоносную ссылку или отправки вредоносной формы XSS-пейлоад будет отражён обратно, интерпретирован браузером пользователя и выполнен. Ещё один способ отправки почти произвольных запросов (GET и POST) — использование встроенного клиента, такого как Adobe Flash. Постоянные атаки происходят, когда вредоносный код отправляется на веб-сайт, где он хранится в течение определённого времени. Примерами любимых целей атакующих часто являются сообщения на форумах, сообщения веб-почты и программное обеспечение веб-чата. Ничего не подозревающему пользователю не требуется взаимодействовать с каким-либо дополнительным сайтом/ссылкой (например, сайтом атакующего или вредоносной ссылкой, отправленной по электронной почте) — достаточно просто просмотреть веб-страницу, содержащую код.