Content Security Policy (CSP) — это мощный механизм безопасности, который позволяет контролировать, какие ресурсы (скрипты, стили, изображения и прочее) могут загружаться на вашем сайте. CSP помогает предотвратить многие виды атак, включая Cross-Site Scripting (XSS), инъекции данных и загрузку вредоносных ресурсов. В этой статье мы подробно разберём, как правильно настроить CSP для WordPress сайта, какие существуют подводные камни и примеры реализации.
Что такое Content Security Policy и зачем она нужна в WordPress?
CSP представляет собой HTTP-заголовок, который сообщает браузеру, откуда разрешено загружать ресурсы. Без CSP злоумышленник может внедрить вредоносный JavaScript или загрузить вредоносные файлы из внешних источников. В WordPress, где часто используются плагины и темы, которые подключают скрипты и стили из разных мест, отсутствие CSP повышает риски безопасности.
Основные преимущества CSP:
- Блокировка неавторизованных скриптов и стилей;
- Предотвращение выполнения вредоносного JavaScript;
- Защита от атак типа XSS;
- Контроль загрузки изображений, шрифтов и других ресурсов;
- Улучшение общей безопасности сайта.
Однако внедрять CSP нужно осторожно, чтобы не сломать функционал сайта.
Как настроить Content Security Policy в WordPress: базовые принципы
Определение источников ресурсов
Для начала нужно определить, какие ресурсы и откуда загружаются на вашем сайте. Обычно это домен сайта, CDN, Google Fonts, плагины и сторонние сервисы. CSP настраивается через директивы, например:
script-src— источники скриптов;style-src— источники CSS;img-src— источники изображений;font-src— источники шрифтов;connect-src— источники для AJAX-запросов;- и другие.
Для WordPress важно добавить домен сайта (например, 'self') и те внешние источники, которые используются плагинами и темами.
Пример базового CSP заголовка для WordPress
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.jsdelivr.net; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src https://fonts.gstatic.com; img-src 'self' data:; connect-src 'self';Здесь мы разрешаем загрузку скриптов с собственного домена и CDN jsdelivr, стили с Google Fonts, включая inline-стили (в WordPress часто используются inline-стили), шрифты с Google Fonts, изображения с сайта и data URI, а также AJAX-запросы с сайта.
Реализация Content Security Policy через functions.php
Добавим CSP заголовок в ответ сервера через хук send_headers. Пример функции для добавления CSP:
function wpscan_add_csp_header() {
$csp = "default-src 'self'; script-src 'self' https://cdn.jsdelivr.net; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src https://fonts.gstatic.com; img-src 'self' data:; connect-src 'self';";
header("Content-Security-Policy: $csp");
}
add_action('send_headers', 'wpscan_add_csp_header');Этот код добавляет заголовок CSP на все страницы сайта. Если есть необходимость, вы можете динамически менять список разрешённых источников в зависимости от страницы.
Использование плагинов для управления CSP в WordPress
Если вы не хотите вручную прописывать заголовки, есть плагины, которые облегчают настройку CSP:
- HTTP Headers — позволяет управлять различными заголовками безопасности, включая CSP, через админ-панель.
- WP Content Security Policy — специализированный плагин для управления CSP с возможностью тонкой настройки.
- Clearfy Pro (https://wpshop.ru/clearfy-pro?utm_source=wpscan.ru&utm_medium=article&utm_campaign=kak-zashhitit-wordpress-ot-attack-s-pomoshhyu-content-security-policy) — комплексный плагин для оптимизации и защиты WordPress, который включает настройку CSP и других заголовков безопасности.
Плагины помогают избежать ошибок в конфигурации и предоставляют удобный интерфейс для мониторинга.
Как отладить и проверить корректность Content Security Policy
Инструменты разработчика в браузере
В консоли браузера (Chrome, Firefox) появятся предупреждения и ошибки CSP, если политика слишком жёсткая или пропускает нежелательные источники. Внимательно изучайте сообщения — они помогут выявить, какие ресурсы блокируются.
Использование онлайн-сервисов и валидаторов
Сервисы типа Google CSP Evaluator и Report URI помогут проверить и улучшить вашу политику безопасности.
Включение режима отчётов (report-only)
Для безопасного тестирования CSP можно сначала включить заголовок Content-Security-Policy-Report-Only, который не блокирует ресурсы, а только сообщает о нарушениях. Это помогает проверить политику без риска сломать сайт.
Особенности CSP для популярных WordPress плагинов и тем
Некоторые плагины и темы подключают ресурсы динамически или используют inline-скрипты, что требует особого внимания при настройке CSP.
Например, если вы используете плагин OmniVideo (https://wpshop.ru/omnivideo?utm_source=wpscan.ru&utm_medium=article&utm_campaign=kak-zashhitit-wordpress-ot-attack-s-pomoshhyu-content-security-policy), который встраивает видео с YouTube и Vimeo, необходимо добавить эти домены в frame-src и media-src:
frame-src 'self' https://www.youtube.com https://player.vimeo.com;А если используется Clearfy Pro, он может помочь автоматически собрать и оптимизировать список разрешённых источников.
Практические советы и рекомендации по внедрению CSP в WordPress
- Всегда начинайте с
Content-Security-Policy-Report-Onlyи собирайте отчёты для корректировки. - Используйте инструменты браузера для отладки и выявления заблокированных ресурсов.
- Добавляйте источники по мере необходимости, минимизируя разрешения для повышения безопасности.
- Обратите внимание на inline-скрипты: WordPress и большинство плагинов их используют, поэтому нужно либо разрешать
'unsafe-inline'(нежелательно), либо переходить на nonce/hashes. - Если ваш сайт использует AJAX, не забудьте настроить
connect-src. - Регулярно обновляйте CSP при добавлении новых плагинов или изменениях в теме.
Заключение
Content Security Policy — мощный инструмент для защиты WordPress сайтов от широкого спектра атак. Несмотря на сложности в настройке, особенно на сайтах с множеством внешних ресурсов, грамотное внедрение CSP значительно повысит безопасность вашего проекта. Используйте приведённые в статье примеры кода для быстрого старта, а плагины вроде Clearfy Pro помогут автоматизировать и упростить процесс.