Заголовки безопасности сайта: HSTS, CSP и другие
Заголовки безопасности — это служебные HTTP-заголовки, которые сервер отдаёт вместе со страницей и которые защищают посетителей от части атак. Их наличие — признак ухоженного сайта и сигнал доверия для поисковиков. Разберём главные заголовки по делу: что каждый даёт и как его добавить.
Что это и зачем
Когда браузер открывает страницу, сервер вместе с HTML присылает набор HTTP-заголовков. Часть из них управляет безопасностью: запрещают встраивать сайт в чужой фрейм, заставляют использовать HTTPS, ограничивают, какие скрипты можно выполнять. Они не заменяют защиту на стороне сервера, но закрывают целый класс клиентских атак (XSS, кликджекинг, перехват соединения) и поднимают общий уровень доверия к сайту.
Главные заголовки
Как добавить
Заголовки настраиваются на сервере. Для Apache — в .htaccess:
Для nginx (внутри блока server) — директива add_header:
С чего начать
Не обязательно внедрять всё сразу. Безопасный порядок: сначала HSTS (если сайт уже на HTTPS), X-Frame-Options и X-Content-Type-Options — они почти не ломают сайт. Content-Security-Policy добавляйте последним и осторожно: слишком строгая политика может заблокировать ваши же скрипты и аналитику. Сначала протестируйте CSP в режиме Report-Only.
Content-Security-Policy подробнее
CSP — самый мощный из заголовков и самый капризный, поэтому о нём отдельно. Он работает как белый список: вы перечисляете, откуда странице разрешено грузить ресурсы, а всё остальное браузер блокирует. Например, директива script-src 'self' разрешает скрипты только с вашего домена, и встроенный злоумышленником чужой скрипт просто не выполнится — это и есть защита от XSS. Сложность в том, что на реальном сайте ресурсы тянутся из многих мест: аналитика, шрифты, виджеты, реклама. Забудете указать домен — отвалится ваш же функционал. Поэтому CSP сначала включают в режиме Content-Security-Policy-Report-Only: он ничего не блокирует, а только сообщает, что заблокировал бы. Вы собираете отчёты, дополняете политику нужными источниками и только потом переводите её в боевой режим.
Как проверить заголовки сайта
Узнать, какие заголовки сайт уже отдаёт, можно несколькими способами. Проще всего — специальным онлайн-сервисом проверки: вводите адрес и получаете список заголовков с оценкой и подсказками, чего не хватает. В браузере то же видно в инструментах разработчика на вкладке Network: откройте любой запрос и посмотрите Response Headers. После настройки обязательно перепроверьте — частая ситуация, когда заголовок прописали, а он не применился из-за ошибки в конфиге или кэша.
Частые ошибки
Несколько граблей, на которые наступают регулярно. HSTS включают на сайте, который ещё не полностью на HTTPS, — и часть страниц перестаёт открываться, потому что браузер запоминает «только https». Добавляют в HSTS флаг preload, не будучи к нему готовыми, а это уже почти необратимо. Делают CSP слишком строгим и блокируют собственную аналитику и виджеты. В nginx дублируют add_header в разных блоках — и тогда заголовки из родительского блока перестают наследоваться, ведь nginx берёт только ближайший набор. Поэтому правило: внедрять по одному, проверять после каждого, а CSP — только через Report-Only.
Влияют ли на SEO
Напрямую заголовки безопасности — не фактор ранжирования, но они работают на него косвенно: повышают доверие и безопасность (часть E-E-A-T), а HSTS закрепляет HTTPS, который фактором уже является. Современные SEO-аудиты (в том числе наш анализатор) проверяют эти заголовки, и их наличие отличает профессионально сделанный сайт.
Коротко
Заголовки безопасности защищают посетителей от XSS, кликджекинга и перехвата соединения. Главные: HSTS (всегда HTTPS), CSP (ограничение скриптов), X-Frame-Options (запрет фреймов), X-Content-Type-Options (nosniff), Referrer-Policy и Permissions-Policy. Настраиваются в .htaccess или nginx. Начните с простых (HSTS, X-Frame-Options, nosniff), CSP добавляйте осторожно. На SEO влияют косвенно — через доверие и HTTPS.