Статья также доступна на украинском (перейти к просмотру).
Содержание:
- X-Frame-Options
- Strict-Transport-Security
- X-Content-Type-Options
- Referrer-Policy
- Permissions-Policy
- Content-Security-Policy
- X-XSS-Protection
- Что такое HTTP Headers?
- Проверка безопасности с помощью сервиса онлайн
- Проверка в браузере
- Проверка с помощью плагина
Заголовки безопасности HTTP являются важной частью безопасности сайта, поскольку они защищают от различных типов атак, таких как XSS, SQL-инъекции и кликджекинг. Когда веб-сервер запрашивает конкретный сайт, ответ предоставляется в виде заголовков ответа HTTP, сообщающих, как обрабатывать содержимое сайта, а также содержат:
-
метаданные;
-
коды состояния;
-
правила кэширования и т.д.
Среди headers для безопасности HTTP есть семь важнейших, с точки зрения безопасности, и именно о них речь пойдет ниже.
Основы заголовки, которые позаботятся о Вашей безопасности.
X-Frame-Options
Основное предназначение данного заголовка – защита от кликджекинга. Нередко злоумышленники применяют iframe, чтобы получить возможность отправлять спам или накручивать лайки: достаточно разместить поверх безвредной, на первый взгляд кнопки прозрачный фрейм, и пользователь, не зная этого, будет подписываться на ютуб канал злоумышленника или соглашаться с отправкой ему сообщений по электронной почте. Для защиты от кликджекинга могут применяться три различных опции:
-
DENY: полностью отключает функции iframe;
-
SAMEORIGIN: позволяет iframe только из того же источника, что и сайт;
-
ALLOW-FROM: разрешает iframe только по определенным URL-адресам.
Сниппет, предназначенный для добавления в .htaccess, для этого заголовка, если пользуемся apache, выглядит так:
<IfModule mod_headers.c>
Header always append X-Frame-Options SAMEORIGIN
</IfModule>
Код для nginx выглядит следующим образом:
add_header X-Frame-Options "SAMEORIGIN";
Для php используется следующий код:
header('X-Frame-Options: SAMEORIGIN');
Strict-Transport-Security
Этот заголовок, сокращенно также называемый HSTS, предназначен для предоставления команды использовать при доступе к сайту только соединение HTTPS. Он помогает предотвратить атаки типа "человек посередине", гарантируя тем самым безопасность подключений к веб-серверу и исключая возможность перенаправления посетителей на вредоносный сайт вместо безопасной версии оригинального сайта. HSTS поддерживают все основные веб-браузеры. Основные значения, которые может иметь такой элемент:
-
max-age – показывает, как долго (в секундах) заголовок будет оставаться активным, то есть, как долго сайт будет доступен с помощью протокола HTTPS. Заданное значение обычно составляет 31,536 млн секунд (что равно одному году).
-
includeSubDomains – необязательное значение HSTS, указывающее на то, что заголовок должен действовать также на поддоменах.
-
preload – если выбрать этот параметр HSTS, сайт будет доступен всегда только на основании защищенного протокола. Необязательный параметр, предусматривающий использование списка доверенных доменов. Чтобы Ваш домен также попал в этот список, нужно подать заявку и подождать обычное время.
К .htaccess нужно добавить этот код:
# HSTS - Only HTTPS connections
<IfModulemod_headers.c>
Header set Strict-Transport-Security "max-age=31536000;"
</IfModule>
X-Content-Type-Options
Этот заголовок, выступающее своеобразным маркером, с помощью которого обнаруживаются попытки замены типов MIME. Если устанавливается значение nosniff, браузер не будет выполнять ни одного контента, подобного JavaScript и тип контента которого указан неверно.
Этот элемент к apache можно добавить с помощью следующего кода:
<IfModule mod_headers.c>
Header set X-Content-Type-Options "nosniff"
</IfModule>
Код для nginx выглядит следующим образом:Код для nginx выглядит следующим образом:
add_header X-Content-Type-Options "nosniff";
Для php используется следующий код:Для php используется следующий код:
header('X-Content-Type-Options: nosniff');
Referrer-Policy
Чрезвычайно важно решение, позволяющее обезопасить данные при переходе по размещенным на сайте ссылкам, ведущим на сторонние ресурсы. По умолчанию рекомендуется задавать значение same-origin, с помощью которого можно отслеживать, как посетители перемещались между отдельными страницами сайта. Также следует отметить, что это название подходит как для HTTP, так и HTML.
Добавление функции происходит через .htaccess, где следует вписать:
# Referrer-Policy
<IfModulemod_headers.c>
Header set Referrer-Policy "same-origin"
</IfModule>
Permissions-Policy
Является основанием для обработки механизма, позволяющего или запрещающего применение функций браузера в документе или в его элементах. Заголовок содержит директивы, в которых расположены списки источников и ключи, посредством которых может ограничиваться использование возможностей этих директив.
Content-Security-Policy
Ключевой задачей CSP является указание источников, из которых может происходить загрузка ресурсов. Это один из наиболее многозадачных параметров, имеющих применение также для команды сайта производить загрузку исключительно из одного указанного домена или не выполнять скрипты inline. Наиболее часто используемыми параметрами являются:
-
default-src – дает указание выполнять загрузку всех ресурсов, находящихся в конкретном источнике – скриптов, картинок, фреймов и т.п.;
-
script-src – дает указание относительно источников, которые могут быть предназначены для скриптов;
-
style-src- дает указание относительно источников, которые могут быть предназначены для стилей.
Элемент можно активировать, добавляя такой сниппет:
<IfModulemod_headers.c>
Header set Content-Security-Policy-Report-Only: "script-src 'self'"
</IfModule>
X-XSS-Protection
С помощью этого элемента останавливается загрузка страницы при обнаружении факта атаки. Данное решение критически нужно юзерам, предпочитающим старые версии браузеров с низким уровнем сохранности. Заголовок анализирует GET или POST параметры с целью выявления кода яваскрипта. Если это обнаруживается, то загрузка страницы останавливается, а на экране появляется предупреждающее сообщение. Наиболее популярны два значения заголовка:
-
0 – полностью отключает фильтрацию XSS.
-
1 - оставляет фильтрацию XSS включенной, но при этом при обнаружении атаки производит очистку страницы, убирая опасное содержимое.
Добавить сниппет apache можно используя следующий код:
<IfModule mod_headers.c>
Header set X-XSS-Protection "1; mode=block"
</IfModule>
Для nginx используется другой код:
add_header X-XSS-Protection "1; mode=block";
А код для php выглядит следующим образом:
header("X-XSS-Protection: 1; mode=block");
Что такое HTTP Headers?
Как проверить, используются ли заголовки безопасности?
Хотите проверить свой сайт и выяснить, не пытаются ли злоумышленники использовать его в своих полезных целях? Есть три основных способа проверки безопасности, и каждый из них отличается высокой эффективностью, удобством и интуитивной навигацией.
Проверка безопасности с помощью сервиса онлайн
Сервис для проверки безопасности https://securityheaders.com – самый простой метод проверки, к тому же алгоритм его применения на самом деле элементарный: копируем адрес сайта, добавляем его в соответствующее окошечко и нажимаем клавишу Scan.
Мы проверили с помощью сервиса сайт https://programer.in.ua/. Как можно заметить на скриншоте, политика сохранности содержания была оценена отрицательно, а это значит его низкий уровень защиты от атак XSS.
На https://securityheaders.com ведется статистика проверок: 3 102 320 страниц www из 234 622 067, которые были протестированы в сервисе, то есть 1,3%, соответствуют всем критериям проверки.
Проверка в браузере
Можно использовать инструмент, доступный в браузере. Для этого достаточно перейти в закладку Inspect (Просмотреть код), как показано на ящике ниже.
Проверка с помощью плагина
Если Вы используете Google Chrome, можно использовать расширение Live HTTP Headers или аналогичное, которое можно найти в поиске (для этого достаточно ввести HTTP Headers). Аналогичные решения созданы также для других браузеров:
-
Fiddler;
-
Omnibug;
-
Apptalk.ninja и т.п.
После установки плагина его нужно активировать, а затем зайти на сайт. После загрузки страницы станет ясно, какие именно заголовки безопасности были добавлены.
Приглашаем воспользоваться нашим виртуальным хостингом по доступным ценам. Во всех тарифных планах домен бесплатный, круглосуточная поддержка 24/7, бесплатный SSL сертификат, ежедневные бекапы и автоматическая установка CMS.
Подписывайтесь на наш телеграм-канал https://t.me/freehostua, чтобы быть в курсе новых полезных материалов.
Смотрите наш канал Youtube на https://www.youtube.com/freehostua.
Мы в чем-то ошиблись, или что-то пропустили?
Напишите об этом в комментариях на сайте и в телеграм-канале. Мы с удовольствием ответим и обсудим Ваши замечания и предложения.
Дата: 25.01.2023 Автор: Яременко Владислав под редакцией Евгения Шермана
|
|
Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:
comments powered by Disqus