Skip to content
← Все статьи

Заголовки безопасности: полный гайд

Зачем нужны заголовки безопасности

Заголовки безопасности HTTP — инструкции для браузера, определяющие правила безопасности при работе с вашим сайтом. Они защищают от XSS, clickjacking, MITM, инъекций и других атак. Настройка занимает минуты, а эффект — закрытие целых классов уязвимостей.

Проверьте текущие заголовки безопасности вашего сайта с помощью сканера безопасности Enterno.io.

Content-Security-Policy (CSP)

Content Security Policy — самый мощный заголовок безопасности. Он определяет, откуда могут загружаться ресурсы: скрипты, стили, изображения, шрифты, фреймы.

Базовая политика

Content-Security-Policy: default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self'; connect-src 'self'; frame-ancestors 'none'

Ключевые директивы

  • default-src — политика по умолчанию для всех типов ресурсов
  • script-src — откуда можно загружать JavaScript
  • style-src — откуда можно загружать CSS
  • img-src — откуда можно загружать изображения
  • connect-src — куда можно отправлять XHR/Fetch/WebSocket запросы
  • frame-ancestors — кто может встраивать ваш сайт в iframe
  • base-uri — ограничение <base> тега
  • form-action — куда могут отправляться формы

Рекомендации

  • Начните с Content-Security-Policy-Report-Only — он логирует нарушения без блокировки
  • Избегайте 'unsafe-inline' и 'unsafe-eval' — они ослабляют защиту от XSS
  • Используйте nonce или hash для инлайн-скриптов: script-src 'nonce-abc123'

Strict-Transport-Security (HSTS)

HSTS заставляет браузер использовать только SSL/TLS проверку для вашего домена. Даже если пользователь введёт http://, браузер автоматически переключится на HTTPS без HTTP-запроса.

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
  • max-age — время действия в секундах (рекомендуется 1 год = 31536000)
  • includeSubDomains — распространяется на все поддомены
  • preload — включает в HSTS preload list браузеров

Внимание: после включения preload откатить можно только через несколько месяцев. Начните с короткого max-age.

X-Frame-Options

Защищает от clickjacking — атаки, когда ваш сайт встраивается в невидимый iframe на вредоносной странице.

X-Frame-Options: DENY
  • DENY — запрет встраивания в iframe везде
  • SAMEORIGIN — разрешить встраивание только с того же домена

Современная замена: CSP frame-ancestors, но X-Frame-Options сохраняется для совместимости.

X-Content-Type-Options

Запрещает браузеру угадывать MIME-тип (MIME SNI). Без этого заголовка браузер может интерпретировать загруженный файл как HTML/JavaScript, даже если сервер отправил его как текст.

X-Content-Type-Options: nosniff

Всегда устанавливайте. Нет причин не устанавливать.

Referrer-Policy

Контролирует, какая информация о реферере передаётся при навигации:

Referrer-Policy: strict-origin-when-cross-origin
  • no-referrer — никогда не передавать реферер
  • same-origin — только для запросов к тому же домену
  • strict-origin-when-cross-origin — полный URL для same-origin, только домен для cross-origin, ничего при HTTPS→HTTP

Permissions-Policy

Контролирует доступ к API документацию браузера: камера, микрофон, IP геолокацию, автовоспроизведение и другие. Заменяет устаревший Feature-Policy.

Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=(self)

Пустые скобки () полностью запрещают функцию. (self) разрешает только для вашего домена.

Cross-Origin Headers

Cross-Origin-Opener-Policy (COOP)

Cross-Origin-Opener-Policy: same-origin

Изолирует контекст окна. Предотвращает атаки через window.opener из межсайтовых окон.

Cross-Origin-Resource-Policy (CORP)

Cross-Origin-Resource-Policy: same-origin

Запрещает другим сайтам загружать ваши ресурсы (защита от hot-linking и утечек данных).

Cross-Origin-Embedder-Policy (COEP)

Cross-Origin-Embedder-Policy: require-corp

Все загружаемые ресурсы должны явно разрешить межсайтовое использование. Требуется для SharedArrayBuffer и высокоточных таймеров.

Пример полной конфигурации nginx

add_header X-Frame-Options "DENY" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self'; frame-ancestors 'none'" always;

Проверка заголовков

Используйте сканер безопасности Enterno.io для полной проверки заголовков безопасности. Также проверьте ответ через HTTP-чекер — он покажет все анализ заголовков ответа вашего сервера.

Итоги

Заголовки безопасности — обязательный минимум защиты любого сайта. Начните с HSTS, X-Content-Type-Options, X-Frame-Options и Referrer-Policy — они простые и безопасные. Затем добавьте CSP, начав с Report-Only режима. Permissions-Policy и Cross-Origin заголовки — для продвинутой защиты.

Проверьте ваш сайт прямо сейчас

Проверить безопасность сайта →
Другие статьи: Безопасность
Безопасность
Passkeys vs 2FA: будущее аутентификации
15.06.2026 · 41 просм.
Безопасность
Как проверить сайт на вирусы и вредоносный код: 7 методов
01.04.2026 · 195 просм.
Безопасность
Безопасность API: лучшие практики защиты
11.03.2026 · 151 просм.
Безопасность
Заголовки безопасности: CSP, HSTS, X-Frame-Options и другие
10.03.2025 · 256 просм.