Новый формат
HTTP-заголовки безопасности: что настроить на сайте
HTTP-заголовки — служебные поля в ответе сервера: они говорят браузеру, как обращаться со страницей (тип контента, кэш, редирект, правила безопасности). Часть из них напрямую снижает риски XSS, кликджекинга и утечки данных.
Ниже — практичный набор security-заголовков. Общая схема запроса/ответа — в статье про протокол HTTP; здесь фокус на защите. Перед правками — бэкап конфига и проверка на staging.
Что такое HTTP-заголовки
При открытии URL браузер получает не только HTML, но и метаданные ответа: `Content-Type`, `Location`, `Cache-Control`, cookie-флаги, security-директивы. Без них протокол «не знает», как безопасно показать страницу.
Заголовки безопасности не заменяют обновления CMS и пароли. Это слой защиты в браузере поверх нормальной гигиены сервера.
Перед настройкой:
- бэкап nginx/Apache/`.htaccess`;
- проверка на копии сайта;
- список своих доменов, CDN, аналитики, виджетов.
HSTS: только HTTPS
`Strict-Transport-Security` говорит браузеру: с этого хоста ходить только по HTTPS заданное время. Снижает риск отката на открытый HTTP и части атак на подмену.
Включайте после того, как сертификат и редиректы стабильны. Опции `includeSubDomains` и `preload` — осознанно: ошибочный preload сложно откатить.
Кликджекинг и MIME: X-Frame-Options, X-Content-Type-Options
`X-Frame-Options` (и аналог в CSP `frame-ancestors`) ограничивает встраивание сайта в iframe чужих страниц — защита от кликджекинга. Типичные значения: `DENY` или `SAMEORIGIN`.
`X-Content-Type-Options: nosniff` запрещает браузеру «угадывать» тип файла мимо заявленного `Content-Type` — меньше сюрпризов с исполнением скриптов.
CSP: политика контента
`Content-Security-Policy` задаёт, откуда можно грузить скрипты, стили, картинки, фреймы. Это главный современный инструмент против многих XSS при правильной настройке.
Начните с инвентаризации доменов (свой хост, CDN, аналитика, чат). Режим Report-Only помогает увидеть нарушения без поломки. Резкий `default-src 'none'` без подготовки почти всегда ломает виджеты.
Referrer-Policy и Permissions-Policy
`Referrer-Policy` ограничивает, сколько URL уходит в `Referer` при переходах — меньше утечки путей и query. Частый баланс: `strict-origin-when-cross-origin`.
`Permissions-Policy` (ранее Feature-Policy) отключает или ограничивает мощные API браузера (камера, микрофон, геолокация), если сайту они не нужны.
Минимальный набор на старт:
- HSTS (после HTTPS);
- X-Content-Type-Options: nosniff;
- frame-ancestors / X-Frame-Options;
- Referrer-Policy;
- черновик CSP в Report-Only.
Как внедрить и проверить
Задайте заголовки в nginx/`add_header`, Apache/`Header set` или панели хостинга. На PHP в шаблоне — запасной вариант, хуже для статики и кэша.
После деплоя проверьте главную, личный кабинет, формы и страницы с виджетами. Смотрите консоль на CSP-ошибки. Документируйте политику для команды, чтобы новый скрипт аналитики не «сломал прод» сюрпризом.
Частые вопросы
Где смотреть заголовки?
DevTools → Network → ответ документа, `curl -I https://сайт/`, онлайн-сканеры security headers. Сверяйте именно боевой HTTPS-хост.
Куда прописывать?
В конфиг веб-сервера (nginx, Apache/`.htaccess`), иногда в приложение (PHP `header()`, middleware). Предпочтителен сервер/CDN — один раз для всего сайта.
X-XSS-Protection ещё нужен?
В современных браузерах устарел и может вредить. Опора — CSP, а не старый XSS-фильтр. Не считайте его основой защиты.
Сломает ли CSP сайт?
Строгий CSP без учёта скриптов — да. Начинайте с Report-Only или мягкой политики, смотрите отчёты, затем ужесточайте.
HSTS без HTTPS?
Нельзя. Сначала стабильный HTTPS и редирект http→https, потом HSTS.
Это влияет на SEO?
Косвенно: безопасность и доверие, меньше риска взлома/спама. Прямого «заголовка для ТОП» нет. Позиции — следствие работ на сайте; планово месяцы после старта SEO.
Feature-Policy или Permissions-Policy?
Актуальное имя — Permissions-Policy (ограничение камеры, геолокации и т.п.). Старое Feature-Policy встречается в гайдах.
Нужны security-заголовки без поломки сайта?
Настроим HSTS, CSP и базовый набор — с проверкой виджетов на staging.
Обсудить задачу