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

Хеш внешнего скрипта в CSP

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

Также ищут: CSP external script hash · external JavaScript hash CSP · integrity и CSP

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

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

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

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

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

  1. Ветка допуска внешнего скрипта по хешу CSP сравнивает данные integrity с hash-source политики. Она сама не вычисляет в этом шаге хеш тела ответа: блокировку несовпадающих байтов документ поручает механизму целостности ресурса.

    Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.7.2.4. Различие допуска метаданных CSP и проверки содержимого Subresource Integrity; полный алгоритм второго механизма здесь не описывается.

  2. Набор распознанных данных integrity должен быть непустым подмножеством разрешённых hash-source: для каждого значения требуется соответствие алгоритма и хеша в политике. Если одно распознанное значение не разрешено, вся эта ветка сопоставления даёт отказ.

    Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.7.2.4 и пояснение 8.4. Речь только о допуске по хешам: подходящий nonce или иной независимый способ допуска здесь не предполагается.

  3. При отсутствии данных integrity или пустом результате их разбора внешний скрипт не совпадает с политикой именно по ветке хешей. Наличие ожидаемого hash-source в заголовке само не создаёт недостающие метаданные запроса.

    Граница применимости: Проект CSP Level 3 от 13 августа 2026 года, 6.7.2.4. Это не утверждение, что скрипт не может быть разрешён другой веткой той же директивы.

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

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

  5. Встроенный код для CSP хешируется после преобразования текста и кодирования UTF-8, а целостность внешнего ресурса проверяется по получаемому ресурсу. Поэтому перенос визуально того же кода из HTML во внешний файл не даёт права автоматически копировать старый хеш без проверки входных байтов.

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

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

Не путать

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

Nonce даёт отдельный путь допуска элемента. Для допуска именно по хешам внешнего скрипта нужны согласованные данные integrity; отсутствие их нельзя восполнить одним ожидаемым хешем в политике.

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

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

  1. Укажите, что проверяется именно ветка hash-source.
  2. Зафиксируйте разобранные данные integrity.
  3. Убедитесь, что набор распознанных значений не пуст.
  4. Сопоставьте каждый распознанный хеш с политикой.
  5. Не учитывайте нераспознанные записи как доказательство целостности.
  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.

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

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

Спасибо!

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