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 зависит от используемого вами веб-сервера:
- Apache: Добавьте следующую строку в файл конфигурации вашего сайта (.htaccess или virtual host):
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
 - Nginx: Добавьте следующую строку в файл конфигурации вашего сайта:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
 - IIS: Добавьте заголовок HSTS в настройках вашего сайта через IIS Manager.
 
HSTS Preload List
HSTS Preload List – это список сайтов, которые браузеры загружают при запуске. Если ваш сайт включен в этот список, браузер будет знать о вашей политике HSTS еще до первого посещения вашего сайта, что обеспечивает максимальную защиту.
Как добавить сайт в HSTS Preload List?
- Убедитесь, что ваш сайт правильно настроен для HSTS с параметром 
preload. - Перейдите на сайт https://hstspreload.org/.
 - Следуйте инструкциям на сайте, чтобы отправить ваш сайт на рассмотрение.
 
Важные замечания
- Начните с небольшого значения max-age: Начните с небольшого значения 
max-age(например, 300 секунд) и постепенно увеличивайте его, чтобы убедиться, что все работает правильно. - Будьте осторожны с includeSubDomains: Убедитесь, что все ваши поддомены также поддерживают HTTPS, прежде чем включать параметр 
includeSubDomains. - Проверьте свою конфигурацию: Используйте онлайн инструменты, такие как https://securityheaders.com/, чтобы проверить, правильно ли настроен HSTS на вашем сайте.