Security-заголовки сайта: HSTS, CSP, X-Frame-Options и зачем они нужны
Помимо самого содержимого страницы, сервер отправляет браузеру служебные HTTP-заголовки, которые включают дополнительные уровни защиты. Их легко забыть настроить — разбираемся, какие они бывают и от чего каждый защищает.
Strict-Transport-Security (HSTS)
Заставляет браузер и дальше всегда открывать сайт только по HTTPS, даже если пользователь наберёт адрес с http://. Без HSTS самый первый переход по http:// теоретически может быть перехвачен злоумышленником в той же сети (downgrade-атака) раньше, чем сработает редирект на HTTPS.
Content-Security-Policy (CSP)
Явно перечисляет, откуда странице разрешено загружать скрипты, стили, изображения и так далее. Это главная защита от XSS: даже если на сайте где-то найдётся уязвимость, позволяющая внедрить чужой код, строгий CSP не даст браузеру его выполнить, потому что источник не в разрешённом списке.
X-Frame-Options
Запрещает встраивать страницу в <iframe> на чужих сайтах. Это защита от clickjacking — когда мошеннический сайт накладывает невидимый iframe с вашей страницей (например, с кнопкой «Подтвердить перевод») поверх своей собственной безобидной на вид кнопки.
X-Content-Type-Options
Значение nosniff запрещает браузеру самому «угадывать» тип содержимого файла, если он отличается от заявленного в Content-Type. Без этого заголовка иногда можно обойти фильтры и заставить браузер исполнить файл не по его реальному назначению.
Referrer-Policy
Управляет тем, сколько информации об адресе текущей страницы передаётся стороннему сайту, когда пользователь переходит по ссылке. Слишком «щедрая» политика по умолчанию может случайно раскрывать внутренние URL (например, с токенами в адресе) сторонним сайтам.
Permissions-Policy
Явно отключает или ограничивает доступ страницы к чувствительным возможностям браузера — геолокации, камере, микрофону и другим, даже если какой-то встроенный сторонний скрипт попробует ими воспользоваться без спроса.
Более новые: COOP, CORP, COEP
Cross-Origin-Opener-Policy, Cross-Origin-Resource-Policy и Cross-Origin-Embedder-Policy — более новая группа заголовков, изолирующая вкладку браузера от других сайтов на уровне процесса. Защищают от части атак класса Spectre и от прямой подгрузки ваших ресурсов чужими сайтами. Нужны не всем сайтам одинаково — COEP, в частности, может сломать встраивание сторонних виджетов, если включить его не глядя.
Как проверить свой сайт
Инструмент «Security-заголовки сайта» на az.pon.az проверяет все перечисленные заголовки одним запросом, показывает счёт (сколько из основных настроено) и готовую строку заголовка для каждого из отсутствующих — можно сразу скопировать в конфиг сервера.
Проверить security-заголовки своего сайта → открыть инструмент на az.pon.az