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
Внимание!
Данный способ не будет работать для запросов к статическим файлам.В файл .htaccess, размещенный в корневом каталоге сайта, можно добавить следующие директивы для формирования отдающихся сайтом заголовков:
Header set X-Frame-Options: DENY
Вместо X-Frame-Options: DENY
укажите любой другой необходимый заголовок и его данные.
PHP
Внимание!
Данный способ не будет работать для запросов к статическим файлам или файлам, при обращении к которым не вызывается скрипт с настроенной выдачей заголовков.
В языке PHP присутствует специальная функция header()
, которая используется для добавления заголовков в ответ сервера. Чтобы добавить какой-либо заголовок, укажите в необходимом скрипте, например index.php
, примерно следующую строку:
header('X-Frame-Options: DENY', false, 200);
Подставьте необходимые данные, необязательные параметры можно не указывать:
- Вместо
X-Frame-Options: DENY
— укажите необходимый заголовок и его данные. - Второй параметр необязательный и указывает на необходимость замены заголовка, если такой уже существует. Установите
false
, если нужно создать несколько одинаковых заголовков, но с разными данными, илиtrue
, если нужно заменить существующие заголовки. - Третий параметр также необязательный и указывает на принудительно установленный код ответа от сервера.
HTML
Внимание!
Данный способ будет работать только для страниц и документов, где устанавливается описываемый метатег.В HTML существует специальный атрибут для метатега, который преобразовует его в полноценный заголовок. Использование этого атрибута возможно примерно следующим образом:
<meta http-equiv="X-Frame-Options" content="DENY">
Замените данные на необходимый заголовок и его значение:
- В атрибуте
http-equiv
укажите сам заголовок. - В атрибуте
content
укажите желаемое значение заголовка.