Чем Reflected XSS отличается от DOM XSS?

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

Короткий ответ

Что ответить на собеседовании

Reflected описывает непостоянное отражение данных конкретного запроса, а DOM XSS — небезопасную обработку недоверенных данных клиентским кодом. Это разные признаки, поэтому они могут пересекаться. Для защиты отслеживают путь source → sink, применяют контекстное кодирование и безопасные способы вывода текста, например textContent в обычном текстовом элементе.

Подробный разбор

Ответ с пояснениями

Эти названия нельзя всегда считать взаимоисключающими категориями. Reflected описывает характер поступления данных: они возвращаются в рамках конкретного обращения, а не сохраняются для последующего показа другим запросам. DOM XSS указывает на опасную обработку данных клиентским кодом в браузере. Пересечение отраженных, сохраненных и клиентских вариантов прямо обсуждает OWASP.

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

При DOM XSS клиентский код получает недоверенное значение из source, источника, и передает его в опасный sink, операцию интерпретации. Источником может быть часть URL, сообщение или ответ сервера; DOM XSS не ограничен фрагментом после # и не означает, что данные обязательно никогда не проходили через сервер. Поэтому отраженные сервером данные тоже могут участвовать в клиентском небезопасном потоке.

Защиту выбирают по контексту. Для обычного текста в подходящем HTML-элементе используют textContent вместо интерпретации строки как разметки. Если разметка действительно необходима, нужна подходящая очистка разрешенного HTML. Для других контекстов действуют собственные правила кодирования и проверки; универсального экранирования на все случаи нет. Эти подходы описаны в рекомендациях OWASP.

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

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку