SecScan

Что такое HSTS и как его включить

HSTS (Strict-Transport-Security) заставляет браузер подключаться к сайту только по HTTPS. Настройка для Nginx, Apache и Cloudflare и меры предосторожности.

Зачем нужен HSTS

Даже если сайт поддерживает HTTPS, пользователь может ввести адрес с http://. Первый запрос уйдёт без шифрования, и злоумышленник в сети может перехватить его и подменить страницу (атака SSL strip). Заголовок HSTS приказывает браузеру: «в течение заданного срока подключайся к этому сайту только по HTTPS».

Как выглядит заголовок

HTTP
Strict-Transport-Security: max-age=31536000; includeSubDomains
  • max-age — сколько секунд браузер помнит о HTTPS (31536000 = 1 год).
  • includeSubDomains — правило действует и на все поддомены.
  • preload — включение домена во встроенные списки браузеров (осторожно, откатить сложно).

Nginx, Apache и Cloudflare

nginx
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
Apache
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

В Cloudflare: SSL/TLS → Edge Certificates → раздел HSTS.

Меры предосторожности

  • Начните с малого значения (например, max-age=300), убедитесь, что всё работает, затем увеличьте.
  • Включайте includeSubDomains, только если все поддомены работают по HTTPS.
  • Заголовок отправляется только в HTTPS-ответах; редирект 301 с HTTP на HTTPS настраивается отдельно.

Другие руководства