Nonce даёт отдельный путь допуска элемента. Для допуска именно по хешам внешнего скрипта нужны согласованные данные integrity; отсутствие их нельзя восполнить одним ожидаемым хешем в политике.
Почему это важно
Один подходящий хеш среди нескольких ещё не означает допуск по этой ветке CSP. При обновлении метаданных нужно согласовать все распознанные значения и затем проверить сам ресурс.
Что подтверждено
Ветка допуска внешнего скрипта по хешу CSP сравнивает данные integrity с hash-source политики. Она сама не вычисляет в этом шаге хеш тела ответа: блокировку несовпадающих байтов документ поручает механизму целостности ресурса.
Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.7.2.4. Различие допуска метаданных CSP и проверки содержимого Subresource Integrity; полный алгоритм второго механизма здесь не описывается.
Набор распознанных данных integrity должен быть непустым подмножеством разрешённых hash-source: для каждого значения требуется соответствие алгоритма и хеша в политике. Если одно распознанное значение не разрешено, вся эта ветка сопоставления даёт отказ.
Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.7.2.4 и пояснение 8.4. Речь только о допуске по хешам: подходящий nonce или иной независимый способ допуска здесь не предполагается.
При отсутствии данных integrity или пустом результате их разбора внешний скрипт не совпадает с политикой именно по ветке хешей. Наличие ожидаемого hash-source в заголовке само не создаёт недостающие метаданные запроса.
Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.7.2.4. Это не утверждение, что скрипт не может быть разрешён другой веткой той же директивы.
Нераспознанные данные integrity, включая неподдерживаемый алгоритм или невалидную запись, не участвуют в описанном сравнении с CSP. Но после их отбрасывания должен остаться хотя бы один распознанный и разрешённый хеш: только мусор не образует совпадение.
Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.7.2.4 и пояснение 8.4. Не предлагает использовать невалидные данные; поддержка алгоритма рассматривается как условие разбора.
Встроенный код для CSP хешируется после преобразования текста и кодирования UTF-8, а целостность внешнего ресурса проверяется по получаемому ресурсу. Поэтому перенос визуально того же кода из HTML во внешний файл не даёт права автоматически копировать старый хеш без проверки входных байтов.
Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.7.3.3 и пояснение 8.4. Возможное различие входа хеширования, а не обещание, что хеш обязательно изменится при любом переносе.
Не путать
Совпадение метаданных с одной директивой — только один этап. Проверка содержимого ресурса и ограничения других блокирующих политик остаются в силе.
Что проверить
- Укажите, что проверяется именно ветка hash-source.
- Зафиксируйте разобранные данные integrity.
- Убедитесь, что набор распознанных значений не пуст.
- Сопоставьте каждый распознанный хеш с политикой.
- Не учитывайте нераспознанные записи как доказательство целостности.
- Проверьте полученный ресурс отдельным механизмом целостности.
- При переносе встроенного кода сравните точный вход хеширования.
Первоисточники
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.
Открыть первоисточник