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

    (3)