Cross-Site Scripting (XSS)

Простыми словами

Приложение выводит непроверенные данные так, что браузер воспринимает их как код. Этот код получает доступ к возможностям страницы и может действовать от имени пользователя.

Как применяется

Защита строится на контекстном кодировании вывода, безопасных шаблонах и DOM API, санитизации разрешённого HTML, Content Security Policy и автоматических тестах.

Пример применения

Комментарий сохраняется в базе и затем выводится без HTML-кодирования. Вместо текста браузеры других пользователей выполняют внедрённый обработчик события.

Не путать с

  • СравнениеCSRF заставляет браузер отправить нежелательный запрос в доверенный сервис; XSS выполняет чужой код внутри страницы и часто позволяет обходить защиту от CSRF.

Как это работает

  1. Источник данныхОпасная строка поступает из запроса, хранилища или внешнего сервиса.
  2. Небезопасный выводПриложение помещает её в HTML, атрибут, URL или JavaScript без контекстной защиты.
  3. ИнтерпретацияБраузер воспринимает часть данных как активный код.
  4. ВоздействиеКод читает доступные данные, меняет страницу или выполняет запросы с полномочиями пользователя.

Продолжить изучение

Связанные термины

Частые вопросы

Все XSS хранятся на сервере?

Нет. Бывают отражённые, хранимые и DOM-based XSS с разными путями данных.

CSP полностью устраняет XSS?

Нет. Строгая CSP снижает последствия и блокирует часть сценариев, но основой остаётся безопасный вывод.

Что значит контекстное кодирование?

Способ экранирования выбирают по месту вставки: HTML, атрибут, URL, CSS или JavaScript требуют разных правил.

Cross-Site Scripting (XSS) — уязвимость веб-приложения, позволяющая выполнить внедрённый активный контент в браузере пользователя в контексте доверенного сайта.