Knowledge Base

Reflected XSS: безопасная проверка экранирования вывода

Reflected XSS: безопасная проверка экранирования вывода

Категория: Web App Security · Риск: high

Reflected XSS: безопасная проверка экранирования вывода

Что проверяет NodeRoute

Расширенный режим отправляет несколько `GET`-запросов с уникальной неисполняемой меткой в распространённых поисковых параметрах. Метка содержит HTML-значимые символы, но не содержит JavaScript, обработчиков событий или другого исполняемого кода.

Проверка доступна только после подтверждения управления доменом через DNS. Она отвечает на узкий вопрос: возвращается ли введённое значение в HTML и экранирует ли приложение специальные символы.

Почему это важно

Если приложение вставляет пользовательский ввод в HTML без контекстного экранирования, злоумышленник может попытаться сформировать ссылку, выполняющую код в браузере посетителя. Возможные последствия:

Как читать результат

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

`Ввод отражается, но экранируется` означает, что HTML-значимые символы были преобразованы или удалены на проверенной поверхности.

`Ввод отражён без экранирования` является признаком HTML injection и требует ручного подтверждения контекста. NodeRoute не запускает JavaScript и не пытается эксплуатировать находку, поэтому отчёт не должен утверждать факт компрометации.

Безопасные границы проверки

Как исправить

Используйте экранирование, соответствующее месту вставки данных:

Современный шаблонизатор с включённым auto-escaping должен оставаться основным барьером. CSP полезна как дополнительная защита, но не заменяет корректное экранирование.

Проверка после исправления

1. Повторите enhanced-скан подтверждённого домена. 2. Убедитесь, что результат изменился на `ввод отражается, но экранируется` или `отражение не обнаружено`. 3. Проверьте конкретный шаблон и контекст вручную в тестовой среде. 4. Добавьте регрессионный тест на исходный параметр. 5. Убедитесь, что cookie сессии имеют `HttpOnly`, `Secure` и подходящий `SameSite`.

Частые ошибки

Не делать

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

Связанные статьи