Skip to content

Как настроить Content-Security-Policy с nonce

Коротко:

Для защиты от XSS настройте CSP с nonce: (1) генерируйте nonce каждый запрос ($nonce = base64_encode(random_bytes(16))); (2) добавьте в заголовок script-src 'nonce-{$nonce}'; (3) проставьте атрибут nonce='{$nonce}' на каждый inline <script>. Без unsafe-inline.

Пошаговая инструкция

  1. Сгенерируйте nonce в PHP. В начале шаблона: $nonce = base64_encode(random_bytes(16));. Обязательно новый nonce на каждый запрос.
  2. Добавьте CSP заголовок. В PHP: header("Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-{$nonce}'; style-src 'self' 'nonce-{$nonce}'; object-src 'none'; base-uri 'self'");
  3. Расставьте nonce на inline скрипты. <script nonce="<?= $nonce ?>">console.log('ok');</script>. Без nonce скрипт будет заблокирован.
  4. Проверьте через валидатор. Используйте /csp чекер Enterno.io. Grade A означает корректная настройка.
  5. Включите CSP-Report-Only параллельно. Для мониторинга: Content-Security-Policy-Report-Only: ...; report-uri /csp-report.php. Собирайте violations перед enforcing.

Открыть инструмент →

Больше по теме

Часто задаваемые вопросы

Нужна ли регистрация?

Нет для быстрой проверки. Для continuous-мониторинга — бесплатный аккаунт.