Протоколы с открытым текстом, такие как HTTP, могут быть уязвимы для атак с перехватом , при которых злоумышленник может прочитать передаваемый контент. Протокол TLS может шифровать трафик и значительно затруднять злоумышленникам использование этих данных в случае их перехвата.
Однако злоумышленники могут обойти TLS, принудительно переведя зашифрованные соединения на использование открытого HTTP-запроса. Для решения этой проблемы можно использовать заголовок ответа HTTP Strict Transport Security (HSTS) . HSTS заставляет браузер пользователя открыть веб-сайт, используя TLS, и не позволяет ему вернуться к открытому HTTP-запросу в течение заданного времени.
Как провалился аудит Lighthouse

Аудит выявил следующие проблемы с заголовком HSTS:
- Если заголовок HSTS вообще не найден.
- Если отсутствует одна из рекомендуемых директив (
max-age,includeSubDomains,preload) - Если длительность действия директивы
max-ageсоставляет менее одного года (31536000 секунд). - Если при разборе заголовка обнаружена синтаксическая ошибка, например, неизвестная директива.
Настройте сильную политику HSTS
Оптимальная конфигурация заголовка HSTS выглядит следующим образом:
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
- Директива
max-ageопределяет время, в течение которого браузер пользователя будет вынужден посещать веб-сайт только по протоколу TLS (в секундах). По истечении этого времени пользователи снова смогут зайти на сайт по обычному HTTP, если веб-сайт не предоставит заголовок HSTS (или будет временно перенаправлен с HTTP на HTTPS). - Установка директивы
includeSubDomainsпринудительно применяет заголовок ко всем поддоменам URL-адреса страницы, изначально отправляющей этот заголовок. Например, отправка заголовка HSTS сgoogle.com, включающего директивуincludeSubDomainsпринудительно применит заголовок HSTS кmail.google.com. - Установка директивы
preloadи отправка домена в службу предварительной загрузки HSTS приведёт к компиляции домена в исполняемые файлы браузера, использующие предварительно загруженный список HSTS. Это справедливо не только для Google Chrome.
Развёртывание заголовка HSTS сопряжено с определёнными рисками. Любые функции, требующие незашифрованного HTTP-соединения, фактически будут недоступны на время, заданное директивой max-age . Возможно, даже на больший срок, если применяется директива preload .
Для снижения рисков, связанных с внедрением, рекомендуется поэтапный подход:
Начните с небольшого значения
max-ageи добавьте толькоincludeSubDomains(безpreload):max-age=3600; includeSubDomainsПосле периода восстановления (например, одной недели) без сообщений о проблемах увеличьте
max-age. Например:max-age=604800; includeSubDomainsЕсли этот начальный этап будет успешным в течение длительного периода времени (например, трех месяцев), веб-сайт и его поддомены следует добавить в список предварительной загрузки HSTS, а также добавить директиву
preload.max-age=63072000; includeSubDomains; preload