Веб и безопасность приложений

Контекстное кодирование вывода

Определение

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

Также ищут: Output encoding · контекстное экранирование · output escaping · contextual encoding

Зачем это знать

Даже допустимое значение при неверной вставке может вызвать XSS, изменить URL или разметку.

Доказательная часть

Что подтверждено

  1. Текст HTML, атрибут HTML, JavaScript, CSS и URL обрабатываются по-разному, поэтому для каждого контекста нужен свой способ кодирования или безопасный API.

    Граница применимости: Контексты вывода в браузере.

  2. Проверка входных данных решает, допустимо ли значение, а кодирование вывода безопасно помещает его в конкретный контекст; эти меры не заменяют друг друга.

    Граница применимости: Различие между проверкой ввода и кодированием вывода.

  3. Когда нужно показать обычный текст, безопасный текстовый способ вывода позволяет не передавать значение разборщику HTML. Использование разборщика разметки для того же значения меняет контекст и требует другой защиты.

    Граница применимости: Выбор безопасного места вывода по OWASP; это не запрет всей разметки в приложении.

  4. Если функция действительно должна принимать форматированный HTML, простое кодирование превратит разметку в текст. Для разрешённой разметки нужен подходящий механизм очистки с закрытой политикой, а последующее небезопасное изменение может нарушить результат очистки.

    Граница применимости: Различие кодирования текста и очистки разрешённого HTML в рекомендациях OWASP.

  5. Кодирование параметра URL и внешнего атрибута защищает синтаксические границы, но не доказывает допустимость схемы или назначения ссылки. Эти свойства проверяют отдельным правилом до безопасной вставки.

    Граница применимости: Вывод ссылки в документе; не смешивается с сетевой политикой исходящих запросов сервера.

Граница терминов

Не путать

Контекстное кодирование вывода Проверка входных данных

Проверка определяет допустимость значения, а кодирование — безопасный способ вставить его в конкретное место. Корректный ввод может быть опасен при другой интерпретации.

Контекстное кодирование вывода Политика безопасности содержимого (CSP)

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

Перед спецификацией

Что проверить

  1. Определите точный контекст каждого места вывода.
  2. Для обычного текста выбирайте текстовый способ вставки.
  3. Не переносите кодирование HTML в произвольный контекст кода.
  4. Для разрешённого HTML применяйте подходящую очистку.
  5. Не меняйте очищенный результат небезопасным преобразованием.
  6. Отдельно проверяйте допустимость схемы и назначения ссылок.
  7. Проверьте места вывода в коде браузера вместе с серверными шаблонами.
Открытые основания

Первоисточники

  • Стандарт1
  • Документация4
  • Официальная документация
    Cross Site Scripting Prevention Cheat Sheet OWASP Foundation · OWASP Cheat Sheet Series, checked 30 August 2026 · проверено

    Определяет context-specific output encoding и safe sinks; CSP и WAF рассматривает как дополнительные, а не основные XSS controls.

    Утверждения: 01 · 03 · 04

  • Официальная документация
    Cross Site Scripting Prevention Cheat Sheet OWASP Foundation · OWASP Cross-Site Scripting Prevention Cheat Sheet, 2026-09-12 capture · проверено

    Определяет context-specific output encoding и safe sinks; CSP и WAF рассматривает как дополнительные, а не основные XSS controls.

    Утверждения: 02 · 05

  • Официальная документация
    Input Validation Cheat Sheet OWASP Foundation · OWASP Input Validation Cheat Sheet, 2026-09-12 capture · проверено

    Задаёт раннюю server-side проверку syntax и semantics, allowlist approach и границу с output encoding.

    Утверждения: 02 · 05

  • Официальная документация
    Input Validation Cheat Sheet OWASP Foundation · OWASP Cheat Sheet Series, checked 30 August 2026 · проверено

    Задаёт раннюю server-side проверку syntax и semantics, allowlist approach и границу с output encoding.

  • Первичная спецификация
    Content Security Policy Level 3 World Wide Web Consortium · W3C Working Draft, 5 May 2026 · проверено

    Определяет CSP directives, source lists, nonce-source и browser enforcement для загрузки и исполнения content.

Карта знаний

Связанные понятия

Из знания — в навык

Курсы по теме

Подтвердите действие