HSTS: Как заставить браузеры использовать только HTTPS

HSTS (HTTP Strict Transport Security) – это механизм веб-безопасности, который помогает защитить веб-сайты от атак типа «понижения протокола» (protocol downgrade attacks) и других атак, связанных с перехватом трафика. В этой статье мы подробно рассмотрим, что такое HSTS, как он работает, и как его настроить для вашего веб-сайта.

Что такое атака понижения протокола?

Атака понижения протокола происходит, когда злоумышленник перехватывает запрос пользователя к вашему веб-сайту и перенаправляет его на небезопасную версию сайта (HTTP вместо HTTPS). Это может произойти, например, через поддельную DNS запись или с помощью атаки «человек посередине» (Man-in-the-Middle). В результате пользователь может оказаться на фишинговом сайте, который выглядит как ваш, но на самом деле создан для кражи его данных.

Как работает HSTS?

HSTS позволяет веб-серверу указывать браузерам, что с ним следует взаимодействовать только через HTTPS. Когда браузер получает заголовок HSTS от сервера, он запоминает эту информацию и автоматически перенаправляет все последующие HTTP запросы на HTTPS. Это означает, что даже если пользователь введет «http://» в адресной строке, браузер автоматически исправит его на «https://».

Преимущества использования HSTS

  • Повышенная безопасность: HSTS защищает пользователей от атак понижения протокола.
  • Улучшение SEO: Google отдает предпочтение сайтам, использующим HTTPS, и HSTS может положительно повлиять на ваш рейтинг в поисковой выдаче.
  • Улучшение производительности: Устранение HTTP перенаправлений может немного улучшить скорость загрузки сайта.
  • Соответствие стандартам безопасности: Использование HSTS демонстрирует вашу приверженность безопасности пользователей.

Настройка HSTS

Настройка HSTS осуществляется путем добавления специального HTTP заголовка в ответ сервера. Этот заголовок называется Strict-Transport-Security.

Пример заголовка HSTS:

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

Разберем параметры этого заголовка:

  • max-age: Указывает, как долго (в секундах) браузер должен запоминать, что с сайтом следует взаимодействовать только через HTTPS. В примере выше значение 31536000 соответствует одному году.
  • includeSubDomains: Указывает, что HSTS должно применяться ко всем поддоменам сайта. Это важно, если у вас есть несколько поддоменов, которые также должны быть защищены.
  • preload: Указывает, что сайт может быть добавлен в список предварительной загрузки HSTS (HSTS Preload List). Это означает, что браузеры будут знать о вашей политике HSTS еще до первого посещения вашего сайта.

Как добавить заголовок HSTS?

Способ добавления заголовка HSTS зависит от используемого вами веб-сервера:

  1. Apache: Добавьте следующую строку в файл конфигурации вашего сайта (.htaccess или virtual host):
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
     
  2. Nginx: Добавьте следующую строку в файл конфигурации вашего сайта:
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
     
  3. IIS: Добавьте заголовок HSTS в настройках вашего сайта через IIS Manager.

HSTS Preload List

HSTS Preload List – это список сайтов, которые браузеры загружают при запуске. Если ваш сайт включен в этот список, браузер будет знать о вашей политике HSTS еще до первого посещения вашего сайта, что обеспечивает максимальную защиту.

Как добавить сайт в HSTS Preload List?

  1. Убедитесь, что ваш сайт правильно настроен для HSTS с параметром preload.
  2. Перейдите на сайт https://hstspreload.org/.
  3. Следуйте инструкциям на сайте, чтобы отправить ваш сайт на рассмотрение.

Важные замечания

  • Начните с небольшого значения max-age: Начните с небольшого значения max-age (например, 300 секунд) и постепенно увеличивайте его, чтобы убедиться, что все работает правильно.
  • Будьте осторожны с includeSubDomains: Убедитесь, что все ваши поддомены также поддерживают HTTPS, прежде чем включать параметр includeSubDomains.
  • Проверьте свою конфигурацию: Используйте онлайн инструменты, такие как https://securityheaders.com/, чтобы проверить, правильно ли настроен HSTS на вашем сайте.