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