Веб и безопасность приложений · проверено по источникам

Разрешение кода по хешу CSP

Разрешение по хешу CSP — запись ожидаемого криптографического хеша кода в политике содержимого. Для встроенного скрипта она сопоставляется с текстом программы по алгоритму выбранной редакции CSP.

Также ищут: CSP hash-source · hash-source · хеш встроенного скрипта CSP

Практический смысл

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

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

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

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

  1. Грамматика hash-source в CSP 3 допускает SHA-256, SHA-384 и SHA-512: имя алгоритма и закодированное значение хеша заключаются в одинарные кавычки. Совпадение с разрешённым хешем — один из путей допуска кода политикой.

    Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 2.3.1 и 6.7.3.3. Не утверждает поддержку каждой редакции проекта любым браузером.

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

    Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.7.3.3. Проверяется текст встроенного скрипта после обработки HTML, а не исходные байты всего сетевого ответа.

  3. При сопоставлении хеша встроенного кода алгоритм CSP заменяет символ «-» на «+», а «_» на «/» в разрешённом значении хеша. Для nonce правило другое: сравнивается сама строка, без декодирования её в скрытое значение.

    Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 2.3.1 и 6.7.3.3. Нормализация кодировки хеша не является общим правилом нормализации всех значений политики.

  4. Если эффективный список источников содержит nonce-source или hash-source, запись unsafe-inline в этом списке не разрешает весь встроенный код. Отдельный элемент всё ещё может пройти проверку подходящего nonce или хеша.

    Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.7.3.2–6.7.3.3. Наличие хеша не означает запрет любого встроенного кода и не переносится на другой независимый список директивы.

  5. Совпадение с разрешённым хешем отвечает на вопрос о допуске данного кода политикой. Оно не проверяет, безопасна ли программа, не очищает недоверенный HTML и не исправляет неправильный контекст вывода данных.

    Граница применимости: Сопоставление алгоритма CSP 3 от 13 августа 2026 года с принятой рекомендацией OWASP по защите от XSS; решение о доверии разрешаемому коду остаётся отдельным.

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

Не путать

Одноразовое значение CSP (nonce)

Хеш сопоставляет подготовленное содержимое, nonce — выданное элементу значение. Строковое совпадение nonce и нормализация представления хеша имеют разные правила.

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

Хеш CSP разрешает исполнение подходящего кода. Контекстное кодирование решает другую задачу: безопасно поместить данные в подходящий контекст вывода.

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

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

  1. Зафиксируйте редакцию CSP и эффективную директиву.
  2. Выберите допустимый алгоритм хеша.
  3. Хешируйте именно текст встроенного кода в требуемом представлении.
  4. Сохраняйте значимые пробелы и переводы строк.
  5. После изменения программы пересчитайте разрешённый хеш.
  6. Учитывайте взаимодействие с unsafe-inline.
  7. Проверяйте сам код и точки вывода отдельно от совпадения хеша.
Открытые основания

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

  • Первичная спецификация

    Content Security Policy Level 3

    World Wide Web Consortium · W3C Working Draft, 13 August 2026

    Прочитана сохранённая локальная HTML-копия. Алгоритмы разделов 6–7 отделены от ненормативных примеров раздела 8; редакция проекта не означает проверку поддержки каждого браузера.

    Открыть первоисточник
  • Официальная документация

    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.

    Открыть первоисточник
  • Первичная спецификация

    Content Security Policy Level 3

    World Wide Web Consortium · W3C Working Draft, 5 May 2026

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

    Открыть первоисточник
Сообщить об ошибке

Опишите проблему — постараемся исправить как можно скорее.

Спасибо!

Получили ваше сообщение.
Подтвердите действие