Веб-инженерия

Заголовки безопасности HTTP: практическое руководство по настройке

Как защитить сайт от XSS, кликджекинга и перехвата сессий с помощью правильной настройки заголовков CSP, HSTS и Permissions-Policy.

Заголовки безопасности HTTP (HTTP Security Headers) передаются сервером в ответ на запрос браузера и активируют встроенные механизмы защиты на стороне клиента.

Большинство веб-сайтов уязвимы к атакам межсайтового скриптинга (XSS) и кликджекингу не из-за ошибок в коде, а из-за отсутствия нескольких строк конфигурации веб-сервера.

Разберем обязательные заголовки безопасности и правила их настройки.

1. Strict-Transport-Security (HSTS)

HSTS принудительно заставляет браузер обращаться к сайту исключительно по защищенному протоколу HTTPS, предотвращая атаки типа Man-in-the-Middle и перехват cookie.

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
  • max-age=31536000 фиксирует правило на один год.
  • includeSubDomains распространяет защиту на все поддомены.

2. Content-Security-Policy (CSP)

Самый мощный инструмент защиты от XSS-атак. CSP строго определяет доверенные домены, с которых разрешена загрузка скриптов, стилей, изображений и подключений.

Пример строгой политики:

Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted-cdn.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:;

Рекомендация: Начните внедрение с заголовка Content-Security-Policy-Report-Only, чтобы собрать отчеты о нарушениях и убедиться, что легитимные скрипты не блокируются.

3. X-Frame-Options

Запрещает встраивание страниц сайта во фреймы <iframe> на сторонних ресурсах, полностью защищая пользователей от атак кликджекинга (clickjacking).

X-Frame-Options: DENY

4. X-Content-Type-Options

Запрещает браузерам пытаться угадать MIME-тип файла вопреки заголовку сервера (nosniff). Это предотвращает выполнение загруженных картинок как исполняемого JavaScript-кода.

X-Content-Type-Options: nosniff

5. Referrer-Policy

Управляет тем, какая часть URL передается в заголовке Referer при переходе по внешним ссылкам.

Referrer-Policy: strict-origin-when-cross-origin

Защищает конфиденциальные параметры из адресной строки от утечки сторонним сайтам.

6. Заголовки, которые нужно удалить

  • Server и X-Powered-By (раскрывают версию PHP/Nginx/Apache злоумышленникам).
  • X-XSS-Protection (устарел и удален из современных браузеров из-за собственных уязвимостей).
Поделиться LinkedIn X WhatsApp

Читать далее

Расскажите, каких показателей вы хотите достичь.

Одна команда. Три международных офиса. 26 рабочих языков. Отправьте нам задачу — мы предложим решение.

Письменное коммерческое предложение в течение одного рабочего дня на вашем языке.