Представляю вашему вниманию очередную часть перевода OWASP Testing Guide. В данной статье речь пойдет о HSTS.



Резюме

HSTS (сокр. от англ. HTTP Strict Transport Security) — механизм, активирующий форсированное защищённое соединение через протокол HTTPS. Данная политика безопасности позволяет сразу же устанавливать безопасное соединение, вместо использования HTTP-протокола. Механизм использует особый заголовок Strict-Transport-Security для принудительного использования браузером протокола HTTPS даже в случае перехода по ссылкам с явным указанием протокола HTTP (http://). Данный механизм является крайне важным и потому обязатеьно нужно убедиться в том, что он используется тестируемым веб-приложением.

Заголовок HSTS использует две директивы:

  • max-age — указывает время за которое браузер должен автоматически преобразовать все HTTP запросы в HTTPS, время указывается в секундах.
  • includeSubDomains — указывает, что все поддомены веб-приложения должны испоьзовать HTTPS.

Ниже приведен пример заголовка HSTS:


Strict-Transport-Security: max-age=60000; includeSubDomains

Если используется заголовок HSTS, то нужно убедится могут ли быть произведены следующие атаки:

  • Прослушивание всего траффика в сети и получение доступа к данным, передаваемым через незашифрованные каналы.
  • Может быть проведен MITM, так как принимаются недоверенные сертификаты.
  • Пользователь случайно вводит адрес в браузере используя HTTP вместо HTTPS или же кликает на ссылку, использующую HTTP.

Как тестировать

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


$ curl -s -D- https://domain.com/ | grep Strict

Ожидаемый результат:


Strict-Transport-Security: max-age=...

Справочные материалы: