Content-Security-Policy: как включить CSP и ничего не сломать
CSP запрещает чужим скриптам выполняться на вашем сайте. Режим отчётов, пошаговое внедрение, nonce и типичные ошибки. Готовая политика для старта.
Проверено по источникам: 11 октября 2026 г.

- 2режима: только отчёты и блокировка
- 3шага внедрения без поломок
- 0unsafe-inline в script-src у строгой политики
Что делает CSP
Политика перечисляет источники, из которых странице можно грузить скрипты, стили, картинки и запросы. Если злоумышленник встроит свой скрипт в комментарий или взломает подключённую библиотеку, браузер откажется его выполнять.
Внедряем в три шага
- Включите заголовок Content-Security-Policy-Report-Only: он ничего не блокирует, а только пишет в консоль, что бы заблокировал.
- Откройте основные страницы, соберите нарушения и добавьте нужные домены: счётчики, виджеты, платёжный шлюз.
- Когда консоль пуста, переименуйте заголовок в Content-Security-Policy и следите за ошибками неделю.
Content-Security-Policy-Report-Only: default-src 'self'; script-src 'self' https://www.googletagmanager.com; img-src 'self' data: https:; object-src 'none'; base-uri 'self'; frame-ancestors 'self'
Чего избегать
unsafe-inline и unsafe-eval в script-src сводят защиту к нулю: именно через них выполняется внедрённый код. Если без встроенных скриптов никак, используйте одноразовый ключ nonce, который сервер подставляет в каждый ответ. Источник «*» и схемы data: или https: в script-src разрешают скрипты откуда угодно. Генератор заголовков соберёт стартовую политику.
Частые вопросы
Почему CSP ломает счётчики?
Счётчики и виджеты грузят скрипты с чужих доменов. Их нужно явно перечислить в script-src и connect-src. Режим отчётов как раз показывает, каких доменов не хватает.
CSP заменяет X-Frame-Options?
Частично: директива frame-ancestors делает то же самое и сильнее. Старый заголовок держат для совместимости со старыми браузерами.
Влияет ли CSP на SEO?
Напрямую нет. Но защищённый сайт реже взламывают, а взломанный сайт теряет позиции и попадает в списки опасных.
