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

Динамическое доверие CSP

strict-dynamic — выражение CSP, меняющее допуск скриптов: разрешённые по nonce или хешу загрузчики могут добавлять зависимости через элементы, созданные вне разбора HTML.

Также ищут: CSP strict-dynamic · strict-dynamic · динамическая загрузка скриптов CSP

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

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

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

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

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

  1. При strict-dynamic скрипт, допущенный по nonce или хешу, может загружать зависимости через программно созданные элементы script, не вставленные HTML-парсером. Для таких запросов не требуется перечислять каждый узел зависимости в списке политики.

    Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.7.1.1 и пояснение 8.2. Рассматривается допускающая этот механизм эффективная директива скриптов; отдельные блокирующие политики применяются независимо.

  2. При strict-dynamic в списке для загрузки скриптов записи узлов, схем, self и unsafe-inline не дают прежнего допуска. Nonce и хеши продолжают учитываться; присутствующий рядом адрес CDN не является дополнительным ограничением программно создаваемых загрузок этой ветви.

    Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.7.1.1, 6.7.3.2 и пояснение 8.2. Не распространяет действие strict-dynamic на изображения, стили или произвольные другие ресурсы.

  3. В примере CSP 3 элемент script, созданный через document.createElement и добавленный в документ, не считается вставленным парсером. Элемент, созданный через document.write, считается вставленным парсером: одна динамическая генерация текста HTML не даёт ему того же допуска strict-dynamic.

    Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.7.1.1 и пример 8.2. Сравниваются указанные способы вставки без подходящего собственного nonce, хеша или иного независимого допуска.

  4. Если злоумышленник управляет адресом скрипта, который разрешённый загрузчик создаёт вне HTML-парсера, strict-dynamic допускает загрузку по такому адресу. Поэтому источник адресов зависимостей и места программного создания скриптов требуют отдельной проверки.

    Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, предупреждение 8.2. Условие — управление адресом программно создаваемого скрипта; правило не утверждает возможность такого управления в любом приложении.

  5. Для запроса скрипта, вставленного парсером, ветка strict-dynamic возвращает запрет, если до неё не прошла проверка nonce или подходящих данных целостности. Один адрес узла в том же списке не спасает такой запрос.

    Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.7.1.1. Речь о результате этой директивы в модели CSP 3 и о запросе без указанного предварительного допуска, а не о любых способах запуска программы.

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

Не путать

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

Nonce может допустить исходный загрузчик. strict-dynamic меняет последующий допуск программно создаваемых зависимостей, поэтому проверка одного значения nonce не оценивает адреса, которые выберет код.

Разрешённые адреса исходящих запросов

strict-dynamic регулирует исполнение и загрузку скриптов браузером. Список исходящих адресов сервера относится к другому участнику и не возникает из браузерной политики.

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

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

  1. Укажите эффективную директиву и поддержку модели CSP 3.
  2. Назовите исходный скрипт, допущенный по nonce или хешу.
  3. Проследите программное создание зависимостей.
  4. Различайте создание элемента и вставку через document.write.
  5. Не считайте адрес CDN действующим ограничением этой ветви.
  6. Проверьте, кто управляет адресами зависимостей.
  7. Учитывайте остальные блокирующие политики и ограничения загрузки.
Открытые основания

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

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

    Content Security Policy Level 3

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

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

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

    Content Security Policy Level 3

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

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

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

    Server Side Request Forgery Prevention Cheat Sheet

    OWASP Foundation · OWASP Cheat Sheet Series, checked 30 August 2026

    Описывает SSRF, allowlist destinations, IP/domain validation, DNS risks и запрет автоматических redirects.

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

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

Спасибо!

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