Атрибут nonce тега <style>


Описание

Атрибут nonce для тега <style> представляет собой одноразовый криптографический токен, используемый для настройки политики безопасности контента (CSP). Он позволяет безопасно встраивать inline-стили, защищая от XSS-атак.

Важно: Значение nonce должно генерироваться сервером для каждого запроса и быть непредсказуемым.
Пример использования:
<style nonce="EDNnf03nceIOfn39fn3e9h3sdfa"> body { background-color: #f5f5f5; } </style>

Особенности работы:

  • Значение должно совпадать с указанным в HTTP-заголовке Content-Security-Policy
  • Должно быть уникальным для каждой страницы
  • Не должно содержаться в кэше или логах
  • Поддерживается всеми современными браузерами

Как настроить CSP с nonce:

Content-Security-Policy: style-src 'nonce-EDNnf03nceIOfn39fn3e9h3sdfa'

Рекомендации:

  • Генерируйте уникальное значение для каждого запроса
  • Никогда не используйте статические значения nonce
  • Сочетайте с другими директивами CSP для лучшей защиты
  • Для динамических приложений используйте хэши вместо nonce

Ограничения:

  • Не поддерживается в очень старых браузерах
  • Требует настройки сервера
  • Усложняет кэширование страниц

Пример реализации на сервере (Node.js):

const crypto = require('crypto'); const nonce = crypto.randomBytes(16).toString('base64'); // Установка CSP заголовка res.setHeader('Content-Security-Policy', `style-src 'nonce-${nonce}'`); // Передача nonce в шаблон res.render('template', { styleNonce: nonce });

Использование в шаблоне:

<style nonce="<%= styleNonce %>"> /* Ваши стили здесь */ </style>

Примечание: Nonce следует использовать только для действительно необходимых inline-стилей. Для большинства случаев лучше выносить стили во внешние файлы.