Перейти к содержимому
Skip to content
← Все статьи

Заголовки безопасности: CSP, HSTS, X-Frame-Options и другие

проверку HTTP-заголовков безопасности — это первая линия защиты вашего сайта от распространённых веб-атак: XSS, clickjacking, MIME-sniffing и перехвата трафика. Правильная настройка занимает минуты, а защищает от большинства атак из OWASP Top 10.

Content-Security-Policy (CSP)

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

Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' https://fonts.gstatic.com; frame-ancestors 'none'

Основные директивы CSP

ДирективаЧто контролирует
default-srcИсточник по умолчанию для всех типов ресурсов
script-srcОткуда можно загружать JavaScript
style-srcОткуда можно загружать CSS
img-srcОткуда можно загружать изображения
font-srcОткуда можно загружать шрифты
connect-srcКуда можно отправлять AJAX/Fetch/WebSocket запросы
frame-srcОткуда можно загружать iframe
frame-ancestorsКто может встраивать вашу страницу в iframe
base-uriДопустимые URL для тега <base>
form-actionКуда разрешено отправлять формы

Значения источников

Режим отчётов

Начните с режима отчётов, чтобы не сломать сайт:

Content-Security-Policy-Report-Only: default-src 'self'; report-uri /csp-report

Браузер будет логировать нарушения, но не блокировать ресурсы.

Strict-Transport-Security (HSTS)

Заставляет браузер всегда использовать HTTPS для вашего домена, даже если пользователь набрал http://:

Strict-Transport-Security: max-age=63072000; includeSubDomains; preload

Важно: перед включением HSTS убедитесь, что весь сайт работает по HTTPS. После включения откатить будет сложно — браузеры запомнят директиву.

X-Frame-Options

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

X-Frame-Options: DENY
ЗначениеОписание
DENYПолный запрет встраивания в iframe
SAMEORIGINРазрешено только с того же домена
ALLOW-FROM uriРазрешено с указанного URL (устарело, не поддерживается в Chrome)

Современная замена — CSP директива frame-ancestors.

X-Content-Type-Options

Запрещает браузеру «угадывать» MIME-тип содержимого (MIME-sniffing):

X-Content-Type-Options: nosniff

Без этого заголовка браузер может интерпретировать текстовый файл как JavaScript и выполнить его — классический вектор XSS-атаки.

Referrer-Policy

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

Referrer-Policy: strict-origin-when-cross-origin
ЗначениеОписание
no-referrerReferer не передаётся вообще
originПередаётся только домен (без пути)
strict-origin-when-cross-originПолный URL для своего домена, только домен для других (рекомендуется)
same-originReferer только для запросов к своему домену
no-referrer-when-downgradeНе передавать при переходе с HTTPS на HTTP

Permissions-Policy

Контролирует доступ к API документацию браузера — камера, микрофон, IP геолокацию, полноэкранный режим и другие:

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

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

X-XSS-Protection

Активирует встроенный XSS-фильтр браузера (устаревший, но полезен для старых версий IE):

X-XSS-Protection: 1; mode=block

Современные браузеры полагаются на CSP вместо этого заголовка, но его стоит включить для обратной совместимости.

Рекомендуемый набор заголовков

Минимальный набор заголовков безопасности для любого сайта:

# Nginx
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" 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'" always;
# Apache (.htaccess)
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
Header always set Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'"

Как проверить заголовки безопасности

Используйте наш инструмент для проверки HTTP заголовков — он покажет все заголовки ответа вашего сайта, включая заголовки безопасности, и поможет выявить отсутствующие:

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

Проверить →
Другие статьи: Безопасность
Безопасность
Стратегии ограничения частоты запросов для веб-API
16.03.2026 · 11 просм.
Безопасность
Чек-лист безопасности веб-сервера: Nginx и Apache
16.03.2026 · 23 просм.
Безопасность
Безопасность API: лучшие практики защиты
11.03.2026 · 14 просм.
Безопасность
Руководство по двухфакторной аутентификации: TOTP, SMS и аппаратные ключи
16.03.2026 · 12 просм.