2.18.8. Заголовки безопасности

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

Внимание!

  • В статье приведены краткие описания заголовков и их возможные значения. Полную информацию можно получить в соответствующей документации.
  • В некоторых значениях могут присутствовать вставки, вместо которых нужно подставлять свои данные, например вместо <url> следует указывать адрес своего сайта в виде example.com.
  • Обязательные значения или данные выделены жирным шрифтом.

К наиболее популярным заголовкам безопасности можно отнести следующие:

Заголовок Допустимые значения Описание
Важные заголовки
Strict-Transport-Security (HSTS) Время в секундах Позволяет настроить только безопасное подключение к сайту по HTTPS. Добавить данный заголовок можно в настройках сайта
X-Frame-Options DENY, SAMEORIGIN, ALLOW-FROM <url> Разрешает или запрещает отображать страницу в качестве (i)frame, embed, object
X-Content-Type-Options nosniff Блокировка запросов к файлам, если их тип не совпадает с типом данных, указанным в заголовке Content-type
Content-Security-Policy default-src, <directives>, <values> Политика безопасности, предоставляющая возможность ограничивать или наоборот разрешать загрузку данных из определённых источников. Из-за большого списка доступных значений в данных предоставлена ссылка на документацию
Referrer-Policy no-referrer, no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url Указывает, какие данные предоставлять в заголовке referrer об адресах, с которых был осуществлён переход. Если заголовок отсутствует, браузеры используют значение по умолчанию — strict-origin-when-cross-origin
Permissions-Policy <directive>, <allowlist> Определяет, какой функционал браузера можно включать на сайте. Данный заголовок также может называться Feature-Policy. Из-за большого списка доступных значений в данных предоставлена ссылка на документацию
Рекомендуемые заголовки
X-Permitted-Cross-Domain-Policies none Указывает на возможность кроссдоменных запросов Flash и PDF (Acrobat)
Clear-Site-Data *, cookie, cache, storage Указывает на необходимость очистки браузером сохраненных данных (cookie, cache, storage)
Cross-Origin-Embedder-Policy unsafe-none, require-corp Предотвращает загрузку ресурсов, которые не дают на то явное согласие
Cross-Origin-Opener-Policy unsafe-none, same-origin-allow-popups, same-origin Описывает доступность открываемого ресурса в рамках основного документа
Cross-Origin-Resource-Policy same-site, same-origin, cross-origin Определяет поведения браузера для блокировки кроссдоменных запросов без приведения к ошибке доступности текущего документа/ресурса

Внимание!

Данный способ не будет работать для запросов к статическим файлам.

В файл .htaccess, размещенный в корневом каталоге сайта, можно добавить следующие директивы для формирования отдающихся сайтом заголовков:

Header set X-Frame-Options: DENY

Вместо X-Frame-Options: DENY укажите любой другой необходимый заголовок и его данные.

Внимание!

Данный способ не будет работать для запросов к статическим файлам или файлам, при обращении к которым не вызывается скрипт с настроенной выдачей заголовков.

В языке PHP присутствует специальная функция header(), которая используется для добавления заголовков в ответ сервера. Чтобы добавить какой-либо заголовок, укажите в необходимом скрипте, например index.php, примерно следующую строку:

header('X-Frame-Options: DENY', false, 200);

Подставьте необходимые данные, необязательные параметры можно не указывать:

  • Вместо X-Frame-Options: DENY — укажите необходимый заголовок и его данные.
  • Второй параметр необязательный и указывает на необходимость замены заголовка, если такой уже существует. Установите false, если нужно создать несколько одинаковых заголовков, но с разными данными, или true, если нужно заменить существующие заголовки.
  • Третий параметр также необязательный и указывает на принудительно установленный код ответа от сервера.

Внимание!

Данный способ будет работать только для страниц и документов, где устанавливается описываемый метатег.

В HTML существует специальный атрибут для метатега, который преобразовует его в полноценный заголовок. Использование этого атрибута возможно примерно следующим образом:

<meta http-equiv="X-Frame-Options" content="DENY">

Замените данные на необходимый заголовок и его значение:

  • В атрибуте http-equiv укажите сам заголовок.
  • В атрибуте content укажите желаемое значение заголовка.
Содержание