Атрибут nonce (от англ. number used once — однократно используемое число) применяется в криптографических целях для защиты содержимого от злоумышленников. Значение nonce представляет собой одноразовый код (в виде набора символов), уникальный для каждой страницы.
Сервер генерирует случайную последовательность символов и включает её в HTTP-заголовок Content-Security-Policy (CSP, политика безопасности содержимого).
Content-Security-Policy: default-src 'self';
script-src 'self' 'nonce-088bebbe01749b89';
Это же значение устанавливается и для элемента <script>:
<script nonce="088bebbe01749b89">…</script>
Браузер сравнивает значение nonce, полученное в SCP и указанное в <script> и если они совпадают, тогда скрипт выполняется. В противном случае выполнение скрипта блокируется.
Синтаксис
<script nonce="<код>">
<link nonce="<код>">
Значения
В качестве значения используется уникальная строка.
Значение по умолчанию
Нет.
Пример
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>nonce</title>
<script src="/example/script/welcome.js"
defer nonce="088bebbe01749b89"></script>
</head>
<body>
<div id="welcome"></div>
</body>
</html>
Спецификация
Спецификация
Каждая спецификация проходит несколько стадий одобрения.
- Recommendation (Рекомендация) — спецификация одобрена W3C и рекомендована как стандарт.
- Candidate Recommendation (Возможная рекомендация) — группа, отвечающая за стандарт, удовлетворена, как он соответствует своим целям, но требуется помощь сообщества разработчиков по реализации стандарта.
- Proposed Recommendation (Предлагаемая рекомендация) — на этом этапе документ представлен на рассмотрение Консультативного совета W3C для окончательного утверждения.
- Working Draft (Рабочий проект) — более зрелая версия черновика после обсуждения и внесения поправок для рассмотрения сообществом.
- Editor's draft (Редакторский черновик) — черновая версия стандарта после внесения правок редакторами проекта.
- Draft (Черновик спецификации) — первая черновая версия стандарта.
Браузеры
Браузеры
В таблице браузеров применяются следующие обозначения.
- — элемент полностью поддерживается браузером;
- — элемент браузером не воспринимается и игнорируется;
- — при работе возможно появление различных ошибок, либо элемент поддерживается с оговорками.
Число указывает версию браузреа, начиная с которой элемент поддерживается.