Заголовки безопасности WordPress: HSTS и CSP базово

zagolovki bezopasnosti wordpress cover Без рубрики
Пошагово: безопасная тройка заголовков, HSTS max-age=300, CSP Report-Only, проверка securityheaders.com и откат через FTP. Без .htaccess, простой русский.

Марина поставила плагин, включила жёсткую политику CSP «как в статье из Google» — исчезли стили админки и форма заявки. Сайт открывается, но не работает. Слышишь «настрой HSTS и CSP», но это не кнопки в админке WordPress, а служебные строки в ответе сервера. Боишься сломать оплату или /wp-admin/. За один вечер можно включить базовые заголовки через один плагин, проверить результат на securityheaders.com и увидеть зелёные галочки — без правки .htaccess и белого экрана.

HTTP-заголовки безопасности — короткие инструкции браузеру: «только HTTPS», «не встраивай страницу в чужой iframe», «не угадывай тип файла». В WordPress их не задают в «Настройки → Общие» — нужен плагин или панель хостинга. Порядок: безопасная тройка → HSTS с max-age=300 → CSP только Report-Only → проверка на securityheaders.com. Откат — деактивировать плагин через FTP.

Это не замена бэкапа, но чеклисты безопасности 2026 года всё чаще спрашивают про HSTS и CSP. Ниже — сценарий для владельца сайта услуг на обычном хостинге без SSH. Первый результат сегодня: оценка B на securityheaders.com и рабочая форма заявки.

Разберитесь, где настраивать заголовки (не в админке WordPress)

Схема на карточках: где настраивать заголовки безопасности WordPress

Типичная ошибка: искать HSTS в «Настройки → Общие». Там только название сайта. Заголовки уходят в каждом ответе сервера — браузер читает их до отрисовки страницы. На shared-хостинге без SSH проще один плагин, чем nginx или .htaccess.

Представьте охранника на входе: он решает, можно ли открыть сайт только по защищённому HTTPS и можно ли встроить вашу страницу в чужой сайт. Эти правила не лежат в базе данных WordPress — их добавляет сервер или плагин при каждом ответе.

На практике главное правило OWASP: один владелец заголовков. Если хостинг уже шлёт HSTS, а плагин дублирует его, сканер покажет путаницу. Не ставьте два header-плагина одновременно.

Проверьте, что уже отдаёт ваш сайт

Чеклист и securityheaders.com на столе у той же стены

Боль «не знаю, сработало ли» закрывается за пять минут. Откройте securityheaders.com в браузере, введите https-адрес. Для малого бизнеса цель на первом проходе — оценка не ниже B при рабочих формах.

Второй способ — Chrome DevTools: F12 → Network → обновите главную → первый документ → Response Headers. Проверьте главную, контакты с формой и /wp-login.php. Запишите, что уже есть: SSL-плагин или CDN иногда добавили часть политик.

Убедитесь, что HTTPS стабилен — без этого HSTS бессмысленен

Карточки HTTPS и HSTS на светлом столе у стены с заголовками

HSTS (Strict-Transport-Security) браузер принимает только по HTTPS. Если сайт открывается по http без редиректа или есть смешанный контент, сначала закройте это.

  1. Сайт открывается по https без предупреждений сертификата.
  2. Редирект с http на https — код 301.
  3. Нет жёлтых замков из-за картинок по http.
  4. Сделан бэкап перед правками.

Включите безопасную тройку через плагин

Установите один плагин: Headers Security Advanced & HSTS WP (галочки без кода) или BoundaryGuard Headers (удобнее CSP, tested up to WordPress 7.0.4 в 2026).

  1. Плагины → Добавить новый → найдите по названию → Установить → Активировать.
  2. Откройте настройки плагина в меню слева.
  3. Включите только базовые заголовки ниже — CSP и HSTS пока не трогайте.
  4. Сохраните и проверьте сайт в приватном окне браузера.

На первом проходе включите:

  • X-Content-Type-Options: nosniff — браузер не угадывает тип файла.
  • X-Frame-Options: SAMEORIGIN — защита от clickjacking.
  • Referrer-Policy: strict-origin-when-cross-origin.
  • Permissions-Policy — отключите camera, microphone, geolocation.

Не включайте X-XSS-Protection: OWASP в 2026 помечает его устаревшим, а плагины всё ещё предлагают в «best practices». После сохранения снова проверьте securityheaders.com.

Критерий Headers Security Advanced BoundaryGuard Headers
Новичку HSTS и базовые заголовки галочками Конструктор CSP и лог нарушений
CSP Report-Only Есть, легко ошибиться Report-Only из коробки
Откат Переименовать папку в wp-content/plugins Тот же приём через FTP

Настройте HSTS осторожно — без preload

Surprising fact: многие гайды советуют HSTS с preload и max-age на год. hstspreload.org рекомендует ступени — от 5 минут (max-age=300) до недели и месяца. Preload отменяется месяцами.

  1. Включайте HSTS только при стабильном HTTPS.
  2. max-age=300, без includeSubDomains и preload.
  3. Через сутки без жалоб — 604800 (неделя).
  4. Месяц — только если понимаете последствия.

Типичная ошибка: preload «ради A+ на сканере». Салону или мастеру с одним доменом это почти не нужно на старте.

Запустите CSP в режиме Report-Only

CSP (Content-Security-Policy) задаёт, откуда грузить скрипты и стили. Темы и плагины WordPress используют inline-скрипты — жёсткий CSP ломает админку и формы. На WordPress.org пользователи восстанавливают сайт через сброс настроек в базе — сценарий Марины.

*Instagram,Facebook (принадлежит компании Meta, признанной экстремистской и запрещённой на территории РФ)

Безопасный путь по MDN: Content-Security-Policy-Report-Only — не блокирует, только пишет нарушения в консоль. Стартовая политика:

default-src ‘self’ https: data:; script-src ‘self’ https: ‘unsafe-inline’ ‘unsafe-eval’; style-src ‘self’ https: ‘unsafe-inline’; img-src ‘self’ https: data:; frame-ancestors ‘self’

Обойдите главную, контакты, корзину (если есть), /wp-admin/. В DevTools → Console запишите blocked CSP — это список того, что жёсткая политика сломала бы. Добавьте домены Яндекс.Метрики, Google Fonts, виджетов в whitelist плагина. Enforce (боевой CSP) — только после чистой консоли на всех важных страницах и свежего бэкапа. Часто ломается форма заявки: в консоли будет blocked script-src — добавьте домен CRM или конструктора форм.

Знайте план отката, если админка не открывается

Если белый экран или нет стилей в /wp-admin/:

  1. FTP или файловый менеджер → wp-content/plugins.
  2. Переименуйте папку плагина заголовков.
  3. Обновите сайт — админка обычно оживает.
  4. Используйте Report-Only или отключите CSP enforce.
  5. При необходимости сбросьте опцию плагина из бэкапа.

Report-Only и бэкап — обязательный первый шаг, не «для продвинутых». В реальном проекте откат занимает минуты, если знаете имя папки плагина.

Как понять, что всё сработало

  • securityheaders.com — оценка не ниже B.
  • В отчёте: Strict-Transport-Security, X-Content-Type-Options: nosniff, X-Frame-Options или frame-ancestors.
  • CSP в Report-Only без критичных блокировок — или мягкая политика с рабочими главной, контактами и /wp-admin/.
  • Форма заявки и аналитика работают.

Запишите список включённых заголовков — через полгода не вспомните, зачем max-age=300.

Схема вечера:
HTTPS и бэкап → один плагин → безопасная тройка → проверка → HSTS 300 сек → CSP Report-Only → усиление без ошибок в консоли

Что дальше

Если страшно включать «боевой» CSP или хостинг дублирует заголовки — напишите в Telegram, поможем проверить заголовки на копии сайта. Рядом по теме: 2FA WordPress, reCAPTCHA для форм, перенос WordPress. Настройка под ключ — услуги или контакты (удобнее писать в мессенджер). Ещё гайды — статьи блога.

Материал проверен: Андрей Дикий (создаёт сайты и продвигает их статьями (SEO/GEO)).
Достоверность данных: MDN (HSTS, CSP, Report-Only), OWASP HTTP Headers и HSTS Cheat Sheet, hstspreload.org, securityheaders.com, wordpress.org/plugins (Headers Security Advanced, BoundaryGuard), тема WordPress.org «Site broken after CSP»; частотность — Яндекс Вордстат на 2026-09-15 (MCP недоступен, точные показы не получены).

Частые вопросы

Что такое HSTS в WordPress простыми словами?

Заголовок Strict-Transport-Security: браузер запоминает, что сайт только по HTTPS. Настраивается плагином, не в «Настройки → Общие». Начинайте с max-age=300 без preload.

Как настроить CSP без поломки сайта?

Content-Security-Policy-Report-Only с мягкой политикой, обход главной, форм и /wp-admin/, разбор консоли. Enforce после чистой консоли и бэкапа.

Какие заголовки нужны сайту услуг сначала?

nosniff, X-Frame-Options SAMEORIGIN, Referrer-Policy, затем осторожный HSTS, CSP позже в Report-Only. Этого хватит для B на securityheaders.com.

Как проверить security headers бесплатно?

securityheaders.com, DevTools → Network → Response Headers, или curl -I https://ваш-домен.ru. Сравните главную и страницу с формой.

Плагин или хостинг — в чём разница?

Один смысл — строки в ответ сервера. Плагин удобен без SSH. Панель хостинга — когда есть доступ. Не дублируйте одни заголовки в двух местах.

Можно ли отключить HSTS?

Да: Strict-Transport-Security с max-age=0 по HTTPS. Браузеры обновят память после успешного https-запроса — короткий max-age на старте страхует.

Нужен ли preload для малого бизнеса?

Обычно нет. Preload в списках браузеров откатывается месяцами. hstspreload.org советует ступени, не год и preload «ради A+».

*Instagram,Facebook (принадлежит компании Meta, признанной экстремистской и запрещённой на территории РФ)
Новый маркетинг с искусственным интеллектом
Добавить комментарий