Настройка заголовков безопасности 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/ |