Атрибут 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-стилей. Для большинства случаев лучше выносить стили во внешние файлы.