Генератор Content Security Policy (CSP)

Соберите директиву Content-Security-Policy по пунктам, экспортируйте её как заголовок, мета-тег, конфигурацию Nginx или Apache и получите предупреждения о небезопасных настройках.

HTTP-заголовок ответа
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests
Оценка политики
Встроенные проверки не нашли проблем.
HTML-тег <meta>
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; upgrade-insecure-requests">
frame-ancestors, report-uri, report-to и sandbox не работают в теге <meta>, поэтому они в него не включены — для них отправляйте HTTP-заголовок.
Nginx
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests" always;
Apache (.htaccess)
Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests"
Импортировать существующую политику
Начните с режима только отчётов (Content-Security-Policy-Report-Only) и посмотрите консоль браузера, прежде чем применять новую политику. Проверки здесь статические и основаны на типичных правилах анализаторов CSP; они не видят реальных скриптов ваших страниц.

Что такое Генератор CSP?

Генератор помогает написать Content-Security-Policy, ограничивающую, откуда могут загружаться скрипты, стили, изображения, фреймы и другие ресурсы. Он начинает со строгой политики, позволяет править каждую директиву и оценивает результат вживую, предупреждая о слабых местах: 'unsafe-inline', подстановочные источники скриптов, отсутствие object-src или base-uri и ключевые слова без кавычек. Можно также импортировать существующую политику.

Как пользоваться Генератор CSP

  1. Начните со строгой начальной политики или с очистки всех директив.
  2. Отредактируйте источники каждой директивы, например 'self' https://cdn.example.com.
  3. Включите upgrade-insecure-requests и при необходимости добавьте report-uri.
  4. Прочитайте оценку политики и исправьте находки высокой и средней важности.
  5. Скопируйте политику как HTTP-заголовок, мета-тег, строку для Nginx или Apache либо импортируйте существующую политику для анализа.

Пример

Ввод
Strict starter policy
Вывод
Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests

Когда использовать Генератор CSP

Используйте для составления или проверки CSP перед развёртыванием. Новые политики сначала выкатывайте как Content-Security-Policy-Report-Only и следите за нарушениями, потому что строгая политика сломает встроенные скрипты и сторонние виджеты, которые вы забыли разрешить. Проверки статические и не видят, какие скрипты ваши страницы действительно загружают.

Как работает Генератор CSP

Директивы сериализуются в фиксированном порядке как name source source; …, пустые пропускаются. Оценка применяет статические правила, подобные Google CSP Evaluator: ключевые слова вроде self или none нужно брать в кавычки; script-src (или default-src как запасной) без nonce/хеша с 'unsafe-inline', 'unsafe-eval', *, http:, https: или data: помечается; object-src должен быть 'none'; base-uri, frame-ancestors и form-action должны быть заданы. Версия для мета-тега опускает frame-ancestors, report-uri, report-to и sandbox, которые браузеры в мета-тегах игнорируют.

Распространенные Случаи Использования

  • Создать первую строгую CSP для нового сайта.
  • Проверить политику, скопированную с продакшена, на 'unsafe-inline' и подстановки.
  • Правильно добавить хост аналитики или CDN в script-src.
  • Получить точную строку add_header для Nginx для политики.

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

Почему 'unsafe-inline' это проблема?

Он разрешает любой встроенный скрипт, в том числе внедрённый через XSS-уязвимость, что сводит на нет основную цель CSP. Используйте nonce или хеши.

Заголовок или мета-тег?

Предпочитайте HTTP-заголовок. Мета-тег не может использовать frame-ancestors, report-uri и sandbox и действует только на содержимое после него.

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

Отправьте ту же политику как Content-Security-Policy-Report-Only; браузеры сообщат о нарушениях в консоли, ничего не блокируя.

Другие категории