FixVibe
Covered by FixVibemedium

Заголовки безопасности HTTP: реализация CSP и HSTS для защиты на стороне браузера

В этом исследовании рассматривается критическая роль заголовков безопасности HTTP, в частности политики безопасности контента (CSP) и строгой транспортной безопасности HTTP (HSTS), в защите веб-приложений от распространенных уязвимостей, таких как межсайтовый скриптинг (XSS) и атак с понижением версии протокола.

CWE-1021CWE-79CWE-319

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

Заголовки безопасности HTTP предоставляют стандартизированный механизм для веб-приложений, позволяющий браузерам применять определенные политики безопасности во время сеанса. [S1] [S2]. Эти заголовки действуют как критический уровень глубокоэшелонированной защиты, снижая риски, которые не могут быть полностью устранены только с помощью логики приложения.

Политика безопасности контента (CSP)

Политика безопасности контента (CSP) — это уровень безопасности, который помогает обнаруживать и смягчать определенные типы атак, включая межсайтовые сценарии (XSS) и атаки путем внедрения данных [S1]. Определяя политику, определяющую, какие динамические ресурсы разрешено загружать, CSP предотвращает выполнение браузером вредоносных сценариев, внедренных злоумышленником [S1]. Это эффективно ограничивает выполнение неавторизованного кода, даже если в приложении существует уязвимость внедрения.

Строгая транспортная безопасность HTTP (HSTS)

HTTP Strict Transport Security (HSTS) — это механизм, который позволяет веб-сайту сообщать браузерам, что доступ к нему следует осуществлять только по протоколу HTTPS, а не HTTP [S2]. Это защищает от атак с понижением версии протокола и перехвата файлов cookie, гарантируя, что весь обмен данными между клиентом и сервером зашифрован. [S2]. Получив этот заголовок, браузер автоматически преобразует все последующие попытки доступа к сайту по HTTP в HTTPS-запросы.

Последствия отсутствия заголовков для безопасности

Приложения, которые не могут реализовать эти заголовки, подвергаются значительно более высокому риску компрометации на стороне клиента. Отсутствие Политики безопасности контента допускает выполнение неавторизованных скриптов, что может привести к перехвату сеанса, несанкционированной утечке данных или порче [S1]. Аналогично, отсутствие заголовка HSTS делает пользователей уязвимыми для атак «человек посередине» (MITM), особенно на начальном этапе подключения, когда злоумышленник может перехватить трафик и перенаправить пользователя на вредоносную или незашифрованную версию сайта [S2].

Как FixVibe проверяет это

FixVibe уже включает это в качестве пассивной проверки сканирования. headers.security-headers проверяет метаданные общедоступного HTTP-ответа на наличие и надежность Content-Security-Policy, Strict-Transport-Security, X-Frame-Options или frame-ancestors, X-Content-Type-Options, Referrer-Policy и Permissions-Policy. Он сообщает об отсутствующих или слабых значениях без проверки эксплойтов, а в подсказке об исправлении приведены примеры заголовков, готовых к развертыванию, для распространенных настроек приложений и CDN.

Руководство по исправлению

Чтобы повысить уровень безопасности, веб-серверы должны быть настроены на возврат этих заголовков на всех производственных маршрутах. Надежный CSP должен быть адаптирован к конкретным требованиям приложения к ресурсам с использованием таких директив, как script-src и object-src, чтобы ограничить среды выполнения сценариев [S1]. В целях транспортной безопасности заголовок Strict-Transport-Security должен быть включен с помощью соответствующей директивы max-age, чтобы обеспечить постоянную защиту во время пользовательских сеансов [S2].