Reflected XSS — это тип атаки, при котором внедрённый злоумышленником JavaScript-код отражается сервером обратно в HTTP-ответе.
Такое поведение встречается в: строках поиска, сообщениях об ошибках, URL-параметрах и других местах, где приложение выводит пользовательские данные без безопасного экранирования.
В отличие от Stored XSS , payload не хранится на сервере — атака существует только в рамках одного HTTP-запроса и ответа.
Как доставляется атака
Обычно злоумышленник распространяет вредоносную ссылку через:
- ▸ Email-сообщения
- ▸ Telegram / Discord / соцсети
- ▸ Вредоносные сайты
- ▸ Сокращённые URL
- ▸ Поддельные формы
Что происходит дальше
Когда пользователь открывает ссылку, вредоносный payload отправляется на сервер вместе с запросом.
Сервер возвращает этот код обратно в HTML-ответе, а браузер выполняет его, считая источник доверенным.
Пример атаки
https://site.com/search?q=<script>alert(1)</script>
Если приложение выводит параметр q без экранирования:
<p>Результаты поиска:
<script>alert(1)</script>
</p>
Возможные последствия
- • Кража cookies и session-token’ов
- • Захват аккаунтов пользователей
- • Фишинговые формы внутри доверенного сайта
- • Выполнение действий от имени жертвы
- • Редиректы на malware-страницы
Важный момент
Reflected XSS особенно опасен в сочетании с социальной инженерией .
Пользователю достаточно просто открыть вредоносную ссылку, чтобы браузер автоматически выполнил payload.
Основные способы защиты
Output Encoding
Экранирование пользовательских данных перед выводом.
Content Security Policy
Ограничение выполнения нежелательных скриптов.
Safe DOM APIs
Отказ от innerHTML и document.write().
Input Validation
Проверка и фильтрация входных данных.