Значение в элементе имеет смысл только вместе с соответствующей политикой. Режим отчётов при совпадении или несовпадении не превращается в блокировку.
Одноразовое значение CSP (nonce)
Определение
Одноразовое значение CSP (nonce) — случайная строка, которую создают заново для каждого ответа и указывают в политике и в тех элементах страницы, которым разрешено выполняться. Браузер сверяет значения и допускает только совпавшие элементы.
Также ищут: CSP nonce · nonce-source · script nonce · одноразовый CSP nonce
Зачем это знать
Если значение повторяется, предсказуемо или попадает в элемент под контролем злоумышленника, ограничение перестаёт защищать выполнение сценариев.
Карта понятия
Что подтверждено
Источник nonce-source в CSP разрешает элемент, значение nonce которого совпадает со значением политики; сравнение выполняет браузер.
Граница применимости: Сопоставление nonce-source в CSP.
Значение nonce создают заново для каждого ответа, делают достаточно случайным и указывают только в разрешённых элементах.
Граница применимости: Создание и размещение nonce в CSP.
CSP Level 3 рекомендует не менее 128 бит случайности до текстового кодирования. Количество символов в строке не равно количеству случайных битов: повторённая или предсказуемая строка не получает случайность от своей длины.
Граница применимости: Рекомендация по случайности nonce в принятой редакции CSP Level 3; это не универсальный формат или фиксированная длина строки.
Одно случайное значение ответа может разрешать несколько доверенных элементов этого документа. Nonce не является токеном, который браузер расходует после первого исполнения; новое значение относится к следующему ответу.
Граница применимости: Сопоставление nonce-source с элементами CSP; не утверждает безопасное повторение между разными ответами.
Если автоматически проставить правильное nonce всем элементам, включая внедрённые, проверка совпадения начнёт разрешать и недоверенное содержимое. Значение добавляют только элементам, которые выбрало доверенное построение документа.
Граница применимости: Вывод из правил совпадения CSP и границы доверенного вывода; не инструкция разрешать произвольную пользовательскую разметку.
Не путать
Nonce не проверяет смысл кода внутри разрешённого элемента. Значения в документе всё ещё требуют безопасного способа вставки.
Что проверить
- Создавайте новое случайное значение для каждого ответа.
- Считайте случайные биты до текстового кодирования.
- Согласуйте значение в заголовке и разрешённых элементах.
- Не назначайте nonce произвольной пользовательской разметке.
- При кешировании проверяйте согласованность заголовка и документа.
- Не считайте nonce расходуемым разрешением одного исполнения.
- Сохраняйте безопасное построение содержимого разрешённых элементов.
Первоисточники
- Content Security Policy Level 3
Определяет CSP directives, source lists, nonce-source и browser enforcement для загрузки и исполнения content.
- Content Security Policy Level 3
Прочитана сохранённая локальная HTML-копия. Алгоритмы разделов 6–7 отделены от ненормативных примеров раздела 8; редакция проекта не означает проверку поддержки каждого браузера.
- Cross Site Scripting Prevention Cheat Sheet
Определяет context-specific output encoding и safe sinks; CSP и WAF рассматривает как дополнительные, а не основные XSS controls.
Утверждения: 05
- Input Validation Cheat Sheet
Задаёт раннюю server-side проверку syntax и semantics, allowlist approach и границу с output encoding.