Кибербезопасность и информационная безопасность

Cross-Site Scripting: Stored, Reflected и DOM

7 мин чтенияОпубликовано: 5 августа 2026 г.
Профессиональная визуальная иллюстрация по тестированию XSS в области Web и API PT
Быстрый ответ

Тестирование XSS следует проводить только в лаборатории или в авторизованной системе. Проверяются Request/Response, поведение сервера, Roles, State и влияние, используя минимальные тесты, не повреждающие данные.

Тестирование безопасности Web и API должно проверять границы доверия, разрешений, ввода, State и бизнес-логики. Каждый тест в статье предназначен для лаборатории, CTF или системы, для которой было получено явное разрешение. Данная статья посвящена тестированию XSS и предназначена для студентов Web PT и разработчиков. Цель – предоставить методику работы, которую можно применять на практике, на профессиональном собеседовании и в рабочей среде, не ограничиваясь словарным определением.

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

Практический сценарий в статье: сопоставление Input-to-Sink в лабораторном приложении. Все примеры являются лабораторными данными или описанием процессов. При проведении Penetration Testing, Web или Cloud, работать следует только с явным разрешением, определенным Scope и возможностью остановить тест.

Как возникает XSS

Тема «Как возникает XSS» является центральной частью работы по тестированию XSS. Рекомендуется разделить ее на три вопроса: что представляет собой ввод, какое решение нужно принять и какого доказательства достаточно для его обоснования. Эти вопросы предотвращают автоматическое использование инструмента без понимания цели.

На практике запишите context, encoding, CSP, stored/reflected/DOM, sanitization, сравните с ожидаемым поведением и определите хотя бы один Pivot. Результат должен быть проверяемым другим аналитиком, включая ограничения и дальнейшие шаги.

Reflected и Stored

Тема «Reflected и Stored» является центральной частью работы по тестированию XSS. Рекомендуется разделить ее на три вопроса: что представляет собой ввод, какое решение нужно принять и какого доказательства достаточно для его обоснования. Эти вопросы предотвращают автоматическое использование инструмента без понимания цели.

На практике запишите context, encoding, CSP, stored/reflected/DOM, sanitization, сравните с ожидаемым поведением и определите хотя бы один Pivot. Результат должен быть проверяемым другим аналитиком, включая ограничения и дальнейшие шаги.

DOM-based XSS

Тема «DOM-based XSS» является центральной частью работы по тестированию XSS. Рекомендуется разделить ее на три вопроса: что представляет собой ввод, какое решение нужно принять и какого доказательства достаточно для его обоснования. Эти вопросы предотвращают автоматическое использование инструмента без понимания цели.

На практике запишите context, encoding, CSP, stored/reflected/DOM, sanitization, сравните с ожидаемым поведением и определите хотя бы один Pivot. Результат должен быть проверяемым другим аналитиком, включая ограничения и дальнейшие шаги.

Context и Encoding

Тема «Context и Encoding» является центральной частью работы по тестированию XSS. Рекомендуется разделить ее на три вопроса: что представляет собой ввод, какое решение нужно принять и какого доказательства достаточно для его обоснования. Эти вопросы предотвращают автоматическое использование инструмента без понимания цели.

На практике запишите context, encoding, CSP, stored/reflected/DOM, sanitization, сравните с ожидаемым поведением и определите хотя бы один Pivot. Результат должен быть проверяемым другим аналитиком, включая ограничения и дальнейшие шаги.

CSP, Remediation и Retest

Профессиональное тестирование XSS начинается с условий успеха и условий неудачи. Определяется положительный Case, отрицательный Case, граничный Case и аналогичная легитимная активность. Это позволяет выявить как False Negative, так и False Positive.

В авторизованной среде используется минимальное действие, подтверждающее утверждение без причинения вреда. Сохраняются Input, Output, время и версия, а после исправления проводится Retest по тому же сценарию и проверяется Regression на соседних функциях.

Уникальные точки тестирования

В этой теме рекомендуется заранее построить сфокусированную карту доказательств. Основными точками тестирования являются: context, encoding, CSP, stored/reflected/DOM, sanitization, sink/source. Список не является автоматическим чек-листом; каждый элемент выбран потому, что он может связать сущность, действие и время или объяснить легитимное поведение.

  • context: Определите ожидаемое значение, что будет считаться аномалией и какой дополнительный источник подтвердит находку.
  • encoding: Определите ожидаемое значение, что будет считаться аномалией и какой дополнительный источник подтвердит находку.
  • CSP: Определите ожидаемое значение, что будет считаться аномалией и какой дополнительный источник подтвердит находку.
  • stored/reflected/DOM: Определите ожидаемое значение, что будет считаться аномалией и какой дополнительный источник подтвердит находку.
  • sanitization: Определите ожидаемое значение, что будет считаться аномалией и какой дополнительный источник подтвердит находку.
  • sink/source: Определите ожидаемое значение, что будет считаться аномалией и какой дополнительный источник подтвердит находку.

Если один из фокусов недоступен, следует задокументировать пробел и выбрать альтернативу. Например, если Process identifier нестабилен, можно использовать время, Host, User и Parent; если Payload зашифрован, используются Metadata, объем, частота и TLS/DNS context.

Рекомендуемый рабочий процесс

  1. Определите Scope и один рабочий вопрос по тестированию XSS.
  2. Запишите источники данных и необходимые доказательства: context, encoding, CSP, stored/reflected/DOM.
  3. Создайте краткий Baseline нормального поведения или ожидаемого результата.
  4. Выполните минимальный тест в лабораторной среде и сохраните время, ввод и вывод.
  5. Постройте Timeline или сравнительную таблицу и разделите факт от интерпретации.
  6. Выполните Pivot к дополнительному источнику для подтверждения или опровержения первоначального объяснения.
  7. Сформулируйте решение, ограничения, рекомендуемое действие и критерий Retest.

Практический сценарий

Выбранный сценарий – сопоставление Input-to-Sink в лабораторном приложении. Цель упражнения не в том, чтобы продемонстрировать возможность атаки, а в том, чтобы отработать сбор, сравнение и документирование безопасным способом. Перед началом работы определяются фиктивные данные, временное окно и ожидаемый результат.

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

ЭтапЧто выполняетсяРезультат
ПодготовкаОпределите Scope, время и цель. Запишите, какие поля или доказательства из context, encoding, CSP должны появиться.Краткий план тестирования
Создание данныхВыполните безопасное и фиктивное действие, связанное с тестированием XSS, без реальной информации или влияния на производственную систему.Контролируемое событие/Request/Flow
СборСоберите необработанные доказательства и контекст из дополнительного источника. Убедитесь в правильности Time zone, идентификаторов и целостности.Два связанных доказательства
АнализНапишите, что каждое доказательство доказывает, что оно не доказывает, и каково возможное легитимное объяснение.Промежуточный вывод
ЗавершениеВыберите завершение, эскалацию, Finding или Tuning; добавьте рекомендацию и Retest.Задокументированный результат

Практический чек-лист

  • Проверьте и задокументируйте: Role и session.
  • Проверьте и задокументируйте: Endpoint и method.
  • Проверьте и задокументируйте: Request/Response.
  • Проверьте и задокументируйте: Object identifier.
  • Проверьте и задокументируйте: Server-side effect.
  • Проверьте и задокументируйте: Control expected и remediation.
  • Укажите Time zone, версию инструмента и время сбора.
  • Сохраните необработанные данные до фильтрации или изменения.
  • Напишите, что находка доказывает и что до сих пор неизвестно.
  • Определите владельца и следующее действие с датой.

Распространенные ошибки

  • Проверять только Status code.
  • Полагаться на изменения Client-side.
  • Использовать опасный Payload.
  • Не проверять разные Roles.
  • Игнорировать бизнес-логику.
  • Сообщать без чистых Request/Response.

Углубленное профессиональное развитие: качество, контекст и контроль

Качественная работа по тестированию XSS измеряется также способностью воспроизвести путь к выводу. Рекомендуется сохранять Query, Filter, Scope, Timestamp, Dataset и версию инструмента. Это позволяет перепроверить тот же случай после изменения конфигурации или после получения дополнительной информации.

Бизнес-контекст меняет техническое значение. Критический актив, учетная запись с привилегиями или служба, обращенная к Интернету, требуют иного уровня осторожности, чем изолированная лаборатория. Однако критичность не заменяет доказательств: она влияет на Priority и действия по реагированию, а не на вопрос, произошло ли поведение на самом деле.

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

Наконец, каждый результат должен стать возможностью для улучшения: отсутствующий источник журнала, непонятный Playbook, "шумное" Rule, широкие разрешения или неточная инструкция по тестированию. Документирование действия и Retest связывают разовое расследование с постоянным улучшением возможностей организации.

Резюме и CTA

Cross-Site Scripting: Stored, Reflected и DOM — это тема, которая связывает технические знания с рабочей дисциплиной. Начните с вопроса, соберите только релевантные доказательства, сохраните контекст и время, и выберите действие, которое можно обосновать и перепроверить.

В рамках программы Cybersecurity & AI от HPI эти принципы отрабатываются с использованием систем, журналов и лабораторий. Естественным продолжением является переход к связанным статьям, выполнение лабораторного упражнения и сохранение результата как части профессионального портфолио.

Вопросы и ответы

Можно ли проверять XSS на общедоступном сайте?

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

Что делать, если часть данных отсутствует?

Задокументируйте отсутствие, проверьте альтернативный источник и уменьшите уровень уверенности. Не следует дополнять поля предположениями или представлять Unknown как корректное.

Как долго нужно хранить доказательства?

Время зависит от политики, регулирования, стоимости и типа события. Важно заранее определить Retention, Legal hold и возможность экспортировать доказательства в проверяемом формате.

Как тренироваться, не рискуя реальной системой?

Используйте виртуальные машины, фиктивные данные, CTF или выделенную лабораторию. При авторизованных тестах определите Scope, Stop conditions и резервное копирование перед началом работы.

Хотите проверить, подходит ли вам эта программа?

Оставьте контакты — консультант HPI перезвонит вам для короткого разговора, без обязательств.

Ваши данные хранятся безопасно.

Для обучения SOC и кибербезопасности в рамках программы Cybersecurity & AI

Хотите узнать подробности программы? Оставьте контакты — мы свяжемся.

Похожие статьи