Используйте строгую политику HSTS. Используйте строгую политику HSTS.

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

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

Как проваливается аудит Lighthouse

Предупреждение аудита Lighthouse о том, что заголовок ответа HSTS не найден.
Отчет Lighthouse предупреждает, что заголовок ответа HSTS не найден.

В ходе аудита будут отмечены следующие проблемы с заголовком HSTS:

  • Если заголовок HSTS вообще не найден.
  • Если одна из рекомендуемых директив отсутствует ( max-age , includedSubDomains , 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 .

Для снижения рисков, связанных с внедрением, рекомендуется поэтапный подход:

  1. Начнем с небольшого max-age и добавим только includeSubDomains (без preload ):

    max-age=3600; includeSubDomains
    
  2. После некоторого периода восстановления (например, одной недели) и отсутствия сообщений о проблемах увеличьте max-age , например:

    max-age=604800; includeSubDomains
    
  3. Если этот начальный этап успешен в течение длительного периода времени (например, трех месяцев), веб-сайт и его поддомены должны быть добавлены в список предварительной загрузки HSTS, а также должна быть добавлена ​​директива preload .

    max-age=63072000; includeSubDomains; preload