Настройка заголовков безопасности HTTP в WordPress

Опубликовано: 2022-02-23

Большинство современных браузеров поддерживают различные заголовки безопасности HTTP для повышения безопасности вашего веб-сайта WordPress, лучшей защиты ваших посетителей от классов браузерных атак, таких как кликджекинг, межсайтовый скриптинг и других распространенных атак, и даже для повышения конфиденциальности посетителей вашего сайта. онлайн.

В этой статье дается обзор того, что представляют собой эти заголовки безопасности HTTP, объясняется, как они работают и какова их область применения. В нем также объясняется, как вы можете добавить эти заголовки безопасности HTTP на свой веб-сайт, чтобы повысить безопасность вашего веб-сайта WordPress.

Что такое заголовок безопасности HTTP?

Заголовки безопасности HTTP представляют собой серию заголовков HTTP 1 . обмен данными между веб-клиентом (браузером) и веб-сервером, которые используются для указания параметров безопасности HTTP-связи между веб-клиентом и сервером. Включение заголовков безопасности на вашем веб-сайте WordPress может повысить устойчивость вашего веб-сайта к распространенным атакам, включая межсайтовый скриптинг (XSS) и кликджекинг.

Как заголовки безопасности HTTP могут улучшить безопасность WordPress

Заголовки безопасности HTTP могут помочь улучшить безопасность вашего веб-сайта WordPress, предписывая браузеру активировать различные функции безопасности соответствующим образом. Во многих случаях внедрение правильных заголовков является сложной задачей и может даже привести к другим результатам (или быть совершенно неэффективным) в старых браузерах, поэтому рекомендуется опробовать любые изменения в тестовой или промежуточной среде, прежде чем применять какие-либо изменения в живой сайт WordPress.

Наиболее часто используемые заголовки безопасности HTTP

Какие заголовки что делают? Давайте углубимся в обзор некоторых наиболее важных и часто используемых заголовков безопасности HTTP.

Строгая транспортная безопасность

HTTP-заголовок Strict-Transport-Security указывает браузеру применять HTTP Strict Transport Security (HSTS) 2 . . Заголовок HSTS предписывает посещающему браузеру всегда получать доступ к сайту через HTTPS (вместо HTTP), даже если пользователь (или злоумышленник, пытающийся запустить атаку «Человек посередине») пытается получить доступ к сайту через HTTP, браузер принудительно переключится на HTTPS, даже если HTTP недоступен — до такой степени вам следует включать HSTS только в том случае, если у вас включен HTTPS и он полностью работает правильно без проблем со смешанным содержимым 3 .

Следующий заголовок ответа HTTP Strict Transport Security (HSTS) включает HSTS на 1 год (31536000 секунд).


Strict-Transport-Security: max-age=31536000

Content-Security-Policy

HTTP-заголовок безопасности Content-Security-Policy — это HTTP-заголовок с большой мощностью и возможностью настройки. Он настраивает политику безопасности контента (CSP) браузера, которая представляет собой набор функций безопасности, присутствующих в современных браузерах, которые обеспечивают дополнительный уровень безопасности, который помогает обнаруживать и смягчать атаки, такие как межсайтовый скриптинг (XSS) и атаки с внедрением данных.

Политика безопасности контента (CSP) также, как известно, сложна для правильной настройки, поскольку правильные настройки CSP будут очень сильно зависеть от рассматриваемого веб-сайта и должны быть тщательно протестированы перед развертыванием — настолько, что у нее есть сестра Content-Security-Policy. -Отчет-Только 4 Заголовок HTTP используется только для тестирования CSP.

Ниже приведен пример довольно простой политики Content-Security Policy (CSP), которая позволяет загружать ресурсы только из источника, из которого обслуживается веб-сайт.


Content-Security-Policy: default-src 'self'

Однако Content-Security Policy (CSP) гораздо более настраиваемый, чем показано в этом простом примере. CSP включает другие директивы, такие как script-src , style-src и img-src , для указания источников, из которых браузер может загружать активы (например, CSS, изображения и шрифты). Полный список того, как можно настроить CSP, см. в кратком справочном руководстве по политике безопасности контента.

X-Content-Type-Options

Заголовок безопасности HTTP X-Content-Type-Options — это нестандартный заголовок, который соблюдается всеми основными браузерами и предотвращает атаки межсайтового скриптинга (XSS), вызванные перехватом MIME-типа 5 . . При наличии этот заголовок указывает браузеру строго следовать типам MIME, определенным в HTTP-заголовке Content-Type, и что браузеру не следует пытаться определить правильный тип MIME для самих данных ответа. В заголовке есть одна директива — nosniff.


X-Content-Type-Options: nosniff

Старые или неиспользуемые заголовки безопасности HTTP

Существует также ряд старых и неиспользуемых заголовков безопасности HTTP. Они больше не используются или больше не работают, потому что были введены как временные исправления, эксперименты или даже нестандартные инициативы, которые с тех пор либо устарели, либо полностью заменены. Ниже приведен список этих заголовков безопасности HTTP.

Заголовки безопасности HTTP заменены Content-Security-Policy

X-Frame-Параметры

Заголовок безопасности HTTP X-Frame-Options в настоящее время является устаревшим заголовком, который был впервые представлен Microsoft Internet Explorer (и принят другими браузерами с разной степенью единообразия и совместимости) для защиты браузеров от межсайтового скриптинга (XSS), кликджекинга и другие атаки, основанные на размещении веб-сайта внутри iframe.

Этот заголовок теперь заменен директивой Content Security Policy (CSP) для предков фреймов. Рекомендуется использовать CSP с директивой предков кадров вместо X-Frame-Options.

X-XSS-защита

Заголовок безопасности HTTP X-XSS-Protection был нестандартным заголовком, введенным для включения или отключения защиты браузера от атак межсайтового скриптинга (XSS). На практике злоумышленникам часто было легко обойти этот заголовок, и в результате он игнорируется большинством современных браузеров.

Публичные ключи

HTTP-заголовок безопасности Public-Key-Pins, используемый для настройки функции безопасности Public Key Pinning (HPKP), которая была введена в Google Chrome и Firefox для предотвращения подмены сертификата TLS. HPKP работал, заставляя веб-сервер предоставлять браузеру набор криптографических хэшей открытых ключей сертификата TLS, используемых веб-сайтом, которые браузер, в свою очередь, будет использовать для сравнения с сертификатами, которые он получает от сервера в последующих запросах. Проблема заключалась в том, что HPKP был довольно сложным в управлении и часто приводил к неправильным настройкам, которые могли полностью отключить доступ к веб-сайту — поэтому его больше не рекомендуется использовать.

Добавление заголовков безопасности HTTP в WordPress

Заголовки безопасности HTTP работают лучше всего, когда они настроены на вашем веб-сервере или, где это применимо, в вашей сети доставки контента (CDN) или брандмауэре веб-приложений. Это позволяет отправлять их по каждому запросу. В качестве альтернативы, хотя и менее идеальной, вы можете использовать плагин WordPress, чтобы установить эти заголовки для вас.

Теперь, когда мы рассмотрели назначение заголовков безопасности HTTP, вот несколько способов их включения на вашем веб-сайте WordPress.

Добавление заголовков безопасности HTTP в WordPress с использованием HTTP-сервера Apache

Ниже приведен пример конфигурации HTTP-сервера Apache, необходимой для включения HTTP Strict Transport Security (HSTS), X-Content-Type-Options и простой политики безопасности содержимого.


<ifModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000"
Header set X-Content-Type-Options "nosniff"
Header set Content-Security-Policy "default-src 'self'"
</ifModule>

Добавление заголовков безопасности HTTP в WordPress с помощью Nginx

Точно так же ниже приведен пример конфигурации Nginx, необходимой для включения HTTP Strict Transport Security (HSTS), X-Content-Type-Options и простой политики безопасности контента.


server {
add_header Strict-Transport-Security "max-age=31536000; always;
add_header X-Content-Type-Options "nosniff" always;
add_header Content-Security-Policy "default-src 'self'" always;
}

Добавление заголовков безопасности HTTP в WordPress с помощью плагина

В качестве альтернативы, хотя он и менее эффективен (поскольку он полагается на сам WordPress для изменения заголовков), использование плагина WordPress может быть самым простым способом добавить заголовки безопасности HTTP на ваш веб-сайт WordPress. Плагины, такие как плагин перенаправления, позволяют добавлять пользовательские заголовки HTTP на ваш сайт.

Как проверить заголовки безопасности HTTP для веб-сайта

После того, как вы добавите заголовки безопасности HTTP на свой веб-сайт WordPress, вы захотите убедиться, что они настроены правильно и работают так, как вы ожидаете. Самый простой способ проверить это — использовать бесплатный инструмент под названием Security Headers 6 . .

Использовать инструмент Security Headers так же просто, как ввести URL-адрес вашего веб-сайта и нажать «Сканировать». Затем вам будет выставлена ​​оценка от A+ до F вместе с объяснением того, как была определена эта оценка.

Ссылки, использованные в этой статье [ + ]

Ссылки, используемые в этой статье
1 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
2 https://owasp.org/www-project-secure-headers/#http-strict-transport-security
3 https://web.dev/what-is-mixed-content/
4 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only
5 https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#mime_sniffing
6 https://securityheaders.com/