Что такое HTTP-заголовки безопасности?

HTTP-заголовки безопасности - это инструкции, которые веб-сервер отправляет браузеру и которые определяют, как браузер должен обрабатывать сайт и некоторые чувствительные с точки зрения безопасности функции. Они могут уменьшить воздействие распространённых веб-рисков, но являются только одним уровнем общей защиты.

Что делают HTTP-заголовки безопасности?

При загрузке сайта браузер получает не только HTML. HTTP-заголовки ответа могут указывать, следует ли использовать только HTTPS, какие ресурсы можно загружать, сколько информации о referrer можно передавать, разрешён ли MIME sniffing и доступны ли определённые функции браузера или framing.

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

Strict-Transport-Security (HSTS)

HSTS сообщает браузеру, что хост должен использоваться только через HTTPS в течение указанного периода. Это помогает предотвращать последующий доступ через HTTP и снижает риск downgrade-атак.

Strict-Transport-Security: max-age=31536000

Content-Security-Policy (CSP)

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

Content-Security-Policy: default-src 'self'

X-Content-Type-Options

Значение nosniff сообщает браузеру, что нужно использовать MIME-тип, указанный сервером, вместо попытки определить его самостоятельно. Это помогает снизить риск проблем с MIME sniffing.

X-Content-Type-Options: nosniff

Referrer-Policy

Referrer-Policy определяет, сколько информации из текущего URL может быть передано как referrer при следующем запросе.

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

Permissions-Policy

Permissions-Policy управляет тем, может ли документ или встроенные frames использовать определённые функции браузера, например камеру или микрофон.

Permissions-Policy: camera=(), microphone=()

X-Frame-Options

X-Frame-Options управляет возможностью загрузки страницы во frame. Он может помочь против clickjacking; для современных конфигураций CSP frame-ancestors обычно даёт более гибкий контроль.

X-Frame-Options: DENY

Что делает HSTS?

HSTS сообщает браузеру использовать HTTPS для будущих соединений с хостом в течение периода, указанного через max-age. С includeSubDomains политика может также распространяться на субдомены. HSTS следует включать только с настройками, подходящими для контролируемых вами доменов.

Что делает CSP?

Content Security Policy позволяет сайту определить, откуда могут загружаться различные типы ресурсов. Политика может ограничивать скрипты и другие источники контента, а также управлять framing и другими возможностями браузера.

CSP мощный, но его легко настроить неправильно. Слишком строгая политика может сломать легитимные функции, а слишком разрешающая может почти не давать защиты. Её следует тестировать на реальном приложении.

Что делает nosniff?

X-Content-Type-Options: nosniff сообщает браузеру, что нужно использовать объявленный Content-Type вместо определения MIME-типа по содержимому. При этом сервер всё равно должен отправлять корректные Content-Type.

Что делает Referrer-Policy?

Referrer-Policy ограничивает информацию, которая может находиться в заголовке Referer запроса. Это полезно, когда URL содержит путь или параметры, которые не следует без необходимости раскрывать другому origin.

Что делает Permissions-Policy?

Permissions-Policy позволяет определить, какие функции браузера доступны документу и встроенным frames. Неиспользуемые функции можно отключить вместо того, чтобы оставлять их без необходимости доступными.

Что делает X-Frame-Options?

X-Frame-Options может запретить отображение страницы внутри frame и помочь против clickjacking. CSP frame-ancestors обеспечивает более гибкий контроль над разрешёнными framing origins.

А что насчёт X-XSS-Protection?

X-XSS-Protection - старый механизм браузеров и не является современной заменой Content-Security-Policy. OWASP не рекомендует полагаться на него как на основной механизм защиты.

Что происходит, если заголовок безопасности отсутствует?

Это зависит от конкретного заголовка. Отсутствие HSTS означает, что браузер не получает эту host-level HTTPS-политику. Отсутствие CSP означает, что приложение не получает защиту своей CSP-политики. Отсутствие других заголовков убирает соответствующие ограничения. Поэтому отсутствие заголовка является сигналом конфигурации, а не автоматическим доказательством уязвимости.

Нужно ли мониторить заголовки безопасности?

Да, особенно если сайт зависит от определённой конфигурации безопасности. Заголовки могут исчезнуть или измениться после деплоя, изменения reverse proxy, миграции CDN или обновления веб-сервера. Внешний мониторинг способен обнаружить такие изменения с той же точки зрения, что и обычный посетитель.

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

Viglar проверяет HTTP-заголовки безопасности, которые предоставляет ваш сайт, и может обнаруживать отсутствующие или изменённые защитные настройки. Это помогает заметить изменения конфигурации после деплоя, изменения хостинга или инфраструктуры.

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

Запустите быструю внешнюю проверку Viglar и посмотрите, какие заголовки безопасности ваш сайт предоставляет сейчас.

Проверить сайт