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, розміщений в кореневому каталозі сайту, можна додати такі директиви для формування заголовків, що віддаються сайтом:

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 вкажіть бажане значення заголовка.
Зміст