Как защитить WordPress от атак с помощью Content Security Policy

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 помогут автоматизировать и упростить процесс.

Как настроить отправку писем WordPress через SMTP: плагины и примеры кода
21.02.2026
Как установить и настроить WordPress Web Application Firewall (WAF) для защиты сайта
11.01.2026
Автоматическое удаление отключённых и неоплаченных заказов WooCommerce с помощью кода
23.05.2026
WooCommerce: как почистить метаданные товаров и оптимизировать базу данных
09.06.2026
Удаление метаданных из фото в WordPress: как защитить сайт и ускорить загрузку
04.01.2026