Генераторы

Конструктор политики безопасности контента (CSP)

Постройте заголовок Content Security Policy интерактивно, директива за директивой.

Заголовок Content-Security-Policy

О инструменте «Конструктор политики безопасности контента (CSP)»

Строит заголовок Content Security Policy интерактивно — выбирая, каким источникам разрешено загружать скрипты, стили, изображения, шрифты и другие типы ресурсов для страницы, и автоматически собирая правильный синтаксис директив. CSP — одна из самых эффективных защит от XSS, но также один из заголовков, который легче всего испортить вручную: одна пропущенная директива или слишком разрешительный wildcard могут либо сломать легитимный функционал страницы, либо незаметно свести на нет защиту. Тестирование новой политики в режиме Content-Security-Policy-Report-Only перед принудительным включением позволяет увидеть, что бы сломалось, не ломая продакшен.

Добавление 'unsafe-inline' или 'unsafe-eval' ради того, чтобы «починить» сломавшуюся страницу, сводит на нет большую часть защиты, которую даёт CSP — если политике для работы требуется одно из этих значений, на самом деле нужно исправлять собственные инлайн-скрипты или стили страницы.

📖 Подробнее в базе знаний →

Быстрые пресеты

Похожие инструменты

Практичная стартовая политика

Для сайта, который загружает всё со своего домена, это строгая и рабочая основа:

default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; font-src 'self'; connect-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'

Сторонние источники (аналитику, CDN, шрифты) добавляйте только в ту директиву, которой они нужны.

Самые важные директивы

ДирективаЗачем
default-srcЗначение по умолчанию для всех директив загрузки, которые вы не задали.
script-srcГлавная защита от XSS. Избегайте 'unsafe-inline'; для нужных встроенных скриптов используйте nonce или хеши.
object-src 'none'Блокирует устаревшее содержимое плагинов.
base-uriНе даёт внедрённому тегу <base> перенаправить относительные URL.
frame-ancestorsОпределяет, кто может встраивать страницу во фрейм (защита от кликджекинга). Современная замена X-Frame-Options.
form-actionОграничивает, куда могут отправляться формы.

Как внедрить, не сломав сайт

  1. Отправляйте политику в заголовке Content-Security-Policy-Report-Only. Браузеры сообщают о нарушениях, но ничего не блокируют.
  2. Откройте все важные страницы и проверьте нарушения в консоли браузера.
  3. Добавьте недостающие источники или вынесите встроенный код в файлы. Для встроенных скриптов, которые должны остаться, используйте значение 'nonce-…', новое для каждого ответа.
  4. Переименуйте заголовок в Content-Security-Policy, чтобы политика начала применяться.

Заголовок или тег meta

Тег <meta http-equiv="Content-Security-Policy"> работает для большинства директив, но frame-ancestors, report-uri и sandbox в нём игнорируются. Лучше использовать HTTP-заголовок. Что сайт отправляет на самом деле, покажет проверка заголовков безопасности.