🛡️
Модуль 2Безпека9 хв читання

HTTP Security Headers — невидимий захист якого у вас мабуть немає

Заголовки безпеки — це невидима броня вашого сайту. 90% сайтів їх не мають, бо ніхто не пояснив навіщо. Пояснюємо.

Кожного разу, коли хтось заходить на ваш сайт, між браузером відвідувача і вашим сервером відбувається "розмова". Браузер надсилає запит: "Дай мені сторінку". Сервер відповідає: "Ось сторінка" — і разом із нею надсилає десятки невидимих "інструкцій" — заголовків. Одні з цих заголовків технічні (тип файлу, розмір, кешування). Інші — це ваш захист від атак.

HTTP Security Headers — це спеціальні заголовки безпеки, які ваш сервер надсилає браузеру і які кажуть: "Ось як поводитись з нашим сайтом, щоб захистити наших користувачів". За даними SecurityHeaders.com, менше 10% сайтів мають їх правильно налаштованими.

< 10%
сайтів мають правильно налаштовані security headers
A+
максимальна оцінка безпеки заголовків (securityheaders.com)
7
ключових заголовків безпеки
1–2 год
роботи розробника для налаштування всіх заголовків

Аналогія: заголовки як інструкції на упаковці

Уявіть, що ваш сайт — це посилка. Браузер клієнта — отримувач. Разом із вмістом посилки (HTML, текст, картинки) ви надсилаєте ярлики: "Зберігати в холоді", "Крихке", "Не перевертати". Ці ярлики кажуть, як поводитись із вмістом.

HTTP Security Headers — це ярлики безпеки: "Не дозволяй завантажувати наш сайт у чужі фрейми", "Не виконуй скрипти не з нашого домену", "Завжди використовуй HTTPS". Браузер читає ці ярлики і дотримується їх.

Ключові заголовки безпеки: що вони роблять

Сім заголовків безпеки які захищають ваш сайт
📜
Content-Security-Policy (CSP)
Каже браузеру: виконуй тільки ті скрипти і завантажуй тільки ті ресурси, що дозволені мною. Якщо хакер впровадить чужий скрипт — браузер його ігноруватиме.
🖼️
X-Frame-Options
Захист від clickjacking. Забороняє вставляти ваш сайт у чужі iframe-фрейми. Без нього ваш сайт можна "накласти" поверх шкідливої сторінки.
🔐
HSTS (Strict-Transport-Security)
Каже браузеру: цей сайт ЗАВЖДИ використовує HTTPS. Навіть якщо користувач введе http:// — автоматично переходь на https://. Захист від MITM-атак.
🗂️
X-Content-Type-Options
Забороняє браузеру "вгадувати" тип файлу. Без нього шкідливий файл замаскований під картинку може бути виконаний браузером.
🔗
Referrer-Policy
Контролює яку інформацію браузер передає іншим сайтам при переходах. Захищає конфіденційність ваших користувачів.
🛡️
Permissions-Policy
Контролює доступ до браузерних API: камера, мікрофон, геолокація. Хакерський скрипт не зможе їх використати без дозволу.
🌐
Cross-Origin headers (CORS, COEP, COOP)
Захищають від атак між різними сайтами. Важливо для складних веб-додатків.

Clickjacking: що відбувається без X-Frame-Options

Clickjacking — атака, яку легко зрозуміти без технічних знань. Хакер створює шкідливий сайт і вставляє ваш сайт у прозорий фрейм поверх своєї сторінки. Відвідувач думає, що клікає на кнопку шкідливого сайту, але насправді клікає на вашому сайті.

Практичний приклад: жертва заходить на фішинговий сайт. Поверх нього у прозорому фреймі завантажений ваш інтернет-магазин з кнопкою "Купити". Жертва клікає — і робить замовлення на вашому сайті або надає дозвіл на якусь дію. Без її відома і бажання.

🖱️

Один рядок налаштування на сервері: "X-Frame-Options: DENY" — і clickjacking стає неможливим для вашого сайту. Цей рядок займає 5 хвилин для розробника.

MITM-атака: що відбувається без HSTS

MITM (Man-In-The-Middle, "людина посередині") — атака, при якій зловмисник перехоплює трафік між клієнтом і вашим сервером. Особливо небезпечна у публічних Wi-Fi мережах.

Сценарій без HSTS: клієнт у кафе підключається до Wi-Fi (або до шкідливої точки доступу створеної хакером). Вводить вашу адресу. Браузер спочатку надсилає незахищений HTTP-запит. Хакер перехоплює і підміняє — відповідає від імені вашого сервера, але вже зі шкідливим контентом або збираючи дані.

З HSTS: браузер знає — цей сайт завжди використовує тільки HTTPS. Незахищений запит не відправляється взагалі. Перехоплювати нічого.

Що може статись без security headers: зведена таблиця ризиків

АтакаРівень ризикуЗахищає заголовок
Clickjacking (підміна кліків)КритичноX-Frame-Options
XSS через чужі скриптиКритичноContent-Security-Policy
MITM (перехоплення трафіку)КритичноHSTS
Виконання шкідливих файлівСереднійX-Content-Type-Options
Витік даних через ReferrerСереднійReferrer-Policy
Несанкціонований доступ до камери/мікрофонуСереднійPermissions-Policy

Як додати заголовки: що треба сказати розробнику

Налаштування заголовків безпеки — технічна задача для розробника або системного адміністратора. Зазвичай займає 1–3 години. Вони додаються в конфігурацію веб-сервера (Nginx, Apache) або в налаштування фреймворку.

Ваше завдання як власника: знати що ці заголовки потрібні, і перевіряти чи вони є. Rank Sentinel перевіряє наявність і правильність всіх ключових заголовків безпеки і показує у звіті яких не вистачає.