Заголовки безпеки: CSP, HSTS та інші
Заголовки безпеки — кілька рядків, які сервер додає до кожної відповіді. Відвідувач їх не бачить, а браузер за ними розуміє, що на вашому сайті можна робити, а що не можна. Налаштовуються вони на сервері і зазвичай не вимагають змінювати код сайту.
Аналогія для власника сайту
Це інструкція охоронцю на вході. Без неї він дозволяє все: будь-який скрипт з будь-якого домену, вбудування вашої сторінки в чужий сайт, спроби вгадати тип файлу. З інструкцією з'являється список: цих пускати, цих ні, цю двері тримати закритою. Дірки в коді заголовки не ремонтують, але заважають ними скористатися.
Який заголовок що робить
| Заголовок | Що дає | Серйозність |
|---|---|---|
| Strict-Transport-Security | Браузер ходить до вас тільки по HTTPS і не відкочує на відкрите з'єднання | Середня |
| Content-Security-Policy | Встановлює, звідки можна завантажувати скрипти. Головна страховка від XSS | Середня |
| X-Frame-Options | Забороняє вбудовувати ваші сторінки у фрейм на чужому сайті (клікджекинг) | Низька |
| X-Content-Type-Options | Забороняє «вгадувати» тип файлу — інакше завантажений файл може виконатися як скрипт | Низька |
| Referrer-Policy | Обмежує, яка адреса йде на сторонні сайти при переході | Інфо |
| Permissions-Policy | Вимикає непотрібні можливості браузера: камеру, мікрофон, геолокацію | Інфо |
Поряд перевіряються флаги cookie — Secure, HttpOnly та SameSite: вони закривають перехоплення сесії.
Як це пов'язано з бізнесом і SEO
Самі по собі заголовки не підвищують позиції — це не фактор ранжування. Працюють вони на іншому фланзі: HSTS усуває ризик відкритого з'єднання, а CSP не дає сторонньому скрипту дописати на сторінки приховані посилання та редиректи. Такі ін'єкції і призводять до падіння позицій і до мітки «сайт може завдати шкоди» у браузері.
Як це виглядає в звіті Security Shield
Перевірка заголовків йде в будь-якому режимі, включаючи швидку безкоштовну. Кожен відсутній заголовок стає окремою знахідкою зі своєю серйозністю, класом CWE та категорією OWASP; з них складається оцінка від A+ до F. Відсутність CSP і HSTS важить більше, ніж відсутність Referrer-Policy. Для цієї групи працює авто-виправлення: сервіс збирає готовий фрагмент конфігурації — .htaccess або блок для nginx.
З чого почати
- Додайте
X-Content-Type-Options: nosniffтаReferrer-Policy: strict-origin-when-cross-origin— вони майже ніколи нічого не ламають. - Закрийте фреймування:
X-Frame-Options: SAMEORIGIN— але перевірте, що ви самі не вбудовуєте свої сторінки в чужі домени. - Переконайтеся, що весь HTTP перенаправляється на HTTPS, і лише потім вмикайте HSTS.
- CSP залиште на кінець і почніть з режиму звітів
Content-Security-Policy-Report-Only.
В режимі Report-Only політика нічого не блокує, а тільки повідомляє, що заблокувала б. Дайте їй попрацювати тиждень на бойовому трафіку, розберіть звіти, додайте потрібні домени — і лише потім перемикайте на бойовий заголовок. Інакше ризикуєте відключити віджети, аналітику та оплату.
Як не допустити повторно
Заголовки живуть у конфігурації сервера, а вона втрачається при переїзді, зміні хостингу або підключенні CDN. Тримайте фрагмент конфіга в репозиторії разом з проектом і повторюйте скан після змін інфраструктури — як влаштований сервіс, описано в статті про Security Shield. Про доступ до кабінету — безпека аккаунта.