CSP защищает от XSS-атак, кликджекинга и подгрузки вредоносного кода. Как составить политику, протестировать через SerpMax и внедрить без ошибок на сервер. Готовые примеры для nginx, Apache, Bitrix и WordPress.
Content Security Policy — это HTTP-заголовок, который сообщает браузеру, из каких источников сайту разрешено загружать ресурсы: скрипты, стили, изображения, шрифты. Без CSP сайт уязвим для XSS-атак: злоумышленник внедряет вредоносный скрипт в форму комментария или поиска, и браузер выполняет его. CSP блокирует такие инъекции на уровне браузера. Кроме безопасности, CSP помогает контролировать, какие сторонние сервисы имеют доступ к странице: аналитика, реклама, виджеты. Запросы «как проверить CSP», «настроить content security policy» появляются в поисковой статистике, и инструмент для проверки уже есть — значит, нужна обучающая статья.
Что такое CSP и зачем он нужен
CSP работает по принципу белого списка. Вы указываете, что скрипты можно загружать только с вашего домена и, например, с Яндекс.Метрики. Всё остальное браузер блокирует. Даже если злоумышленник вставит тег script в форму комментария, код не выполнится. CSP также защищает от кликджекинга (через директиву frame-ancestors), от подгрузки стилей с чужих доменов, от выполнения inline-скриптов. Настроенный CSP снижает риск атак, что для коммерческих сайтов и интернет-магазинов критично. Поисковики напрямую не ранжируют по наличию CSP, но безопасность сайта влияет на доверие пользователей и, как следствие, на поведенческие факторы.
Как проверить CSP-заголовок онлайн
Проверить, используется ли на сайте CSP, можно через Проверка CSP заголовка в SerpMax. Введите URL, и сервис покажет текущее значение заголовка Content-Security-Policy. Если заголовок отсутствует — сайт не защищён. Если присутствует — вы увидите все директивы и сможете оценить, насколько политика строгая. Также CSP можно проверить вручную в инструментах разработчика браузера: вкладка Network → заголовки ответа. Но ручной метод неудобен для массовой проверки, если у вас много сайтов. Для комплексной проверки безопасности используйте SEO аудит сайта онлайн — он включает проверку CSP и других защитных заголовков.
Структура CSP: основные директивы
Политика состоит из директив, разделённых точкой с запятой. Основные: default-src — источник по умолчанию для всех типов ресурсов; script-src — откуда можно загружать JavaScript; style-src — откуда загружать CSS; img-src — источники изображений; font-src — источники шрифтов; connect-src — для XHR и WebSocket; frame-ancestors — кто может встраивать сайт в iframe. Для каждой директивы указываются источники: self — свой домен, конкретный URL, none — запретить всё, unsafe-inline — разрешить inline-скрипты (ослабляет защиту), unsafe-eval — разрешить eval (тоже риск). Пример минимальной политики: default-src self; script-src self https://mc.yandex.ru; style-src self unsafe-inline; img-src self data: https:*.
Как настроить CSP на сервере
Настройка зависит от веб-сервера. Для nginx в секции server или location добавьте: add_header Content-Security-Policy «default-src self; script-src self https://mc.yandex.ru;»;. Для Apache используйте директиву Header set Content-Security-Policy в .htaccess. Для сайтов на CMS есть плагины: для WordPress — Headers Security Advanced, для Bitrix — настройки в административной панели. Перед внедрением обязательно протестируйте политику в режиме Content-Security-Policy-Report-Only. Этот заголовок не блокирует ресурсы, а только сообщает о нарушениях. Так вы увидите, что сломается, и скорректируете политику до боевого применения. После настройки повторно проверьте заголовок через Проверка CSP, чтобы убедиться, что сервер его отдаёт.
Типичные ошибки при настройке
Первая ошибка: слишком жёсткая политика, которая ломает сайт. Запретили unsafe-inline для style-src — все встроенные стили перестали работать. Решение: тестировать через Report-Only. Вторая ошибка: дублирование заголовков. Если и веб-сервер, и CMS добавляют CSP, браузер может применить более строгий, что приведёт к поломкам. Проверьте HTTP-заголовки через Проверка HTTP заголовков. Третья ошибка: использование unsafe-eval без необходимости. Это отключает защиту от части XSS-атак. Если можно обойтись без eval — обходитесь. Четвёртая: отсутствие директивы frame-ancestors. Без неё сайт могут встроить в iframe на чужом ресурсе и использовать для кликджекинга.
Часто задаваемые вопросы
Как проверить, есть ли CSP на сайте?
Используйте SerpMax для проверки CSP. Введите URL, и сервис покажет значение заголовка Content-Security-Policy или сообщит о его отсутствии.
Обязателен ли CSP для SEO?
Напрямую CSP не фактор ранжирования. Но он защищает сайт от атак, повышает доверие пользователей и улучшает поведенческие факторы, что косвенно помогает SEO.
Можно ли сломать сайт CSP-заголовком?
Да, если политика слишком строгая. Браузер начнёт блокировать легитимные скрипты и стили. Поэтому всегда тестируйте политику в режиме Report-Only перед боевым внедрением.