Заголовки безопасности: 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. Про доступ к кабинету — безопасность аккаунта.