2.15.6. Заголовки безопасности
На нашем сайте доступен инструмент, с помощью которого можно проверять возвращаемые сайтом заголовки безопасности. Такие заголовки оказывают большое влияние на безопасность как самого сайта, так и его посетителей, поэтому рекомендуем добавлять такие заголовки на своих сайтах.
Описание
Внимание!
- В статье приведены краткие описания заголовков и их возможные значения. Полную информацию можно получить в соответствующей документации.
- В некоторых значениях могут присутствовать вставки, вместо которых нужно подставлять свои данные, например вместо
<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укажите желаемое значение заголовка.