PassFront
  1. PassFront
  2. База знаний
  3. DOM и браузер

Что такое XSS (Cross-Site Scripting)

DOM и браузер

XSS (Cross-Site Scripting) — это уязвимость, при которой злоумышленник внедряет вредоносный JavaScript на страницу, и он выполняется в браузере других пользователей.

Как работает

Если пользовательский ввод выводится на страницу без экранирования, введённый скрипт исполнится:

// Уязвимо
element.innerHTML = userInput; // <script>steal()</script> выполнится

Скрипт может украсть cookie/токены, выполнить действия от имени пользователя, подменить контент.

Виды XSS

  • Stored (хранимый) — вредонос сохраняется на сервере (комментарий) и бьёт по всем.
  • Reflected (отражённый) — приходит через параметр URL и отражается в ответе.
  • DOM-based — уязвимость в клиентском JS, работающем с DOM.

Защита

  • Экранировать вывод — не вставлять сырой ввод в HTML; использовать textContent вместо innerHTML.
  • Фреймворки — React/Vue экранируют по умолчанию ({userInput} безопасно); опасен dangerouslySetInnerHTML.
  • Санитизация — DOMPurify для доверенного HTML.
  • CSP (Content-Security-Policy) — ограничивает выполнение скриптов.
  • HttpOnly cookie — токен недоступен из JS, сложнее украсть.

Коротко для собеседования

XSS — внедрение вредоносного JS в страницу через неэкранированный ввод; крадёт токены и действует от имени пользователя. Виды: stored, reflected, DOM-based. Защита: экранирование вывода (textContent, авто-экранирование React), санитизация (DOMPurify), CSP, HttpOnly cookie.

Подробнее: MDN — XSS

Другие вопросы раздела