Knowledge Base

HSTS: принудительный HTTPS для браузеров

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

Категория: SSL/TLS · Риск: low

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

После первого HTTPS-соединения браузер запоминает: «этот сайт всегда по HTTPS». При следующем обращении по HTTP браузер делает внутренний редирект без запроса к серверу.

Защита: атакующий не сможет перехватить первый запрос (после истечения max-age).

Правильный заголовок

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

| Параметр | Значение | |----------|---------| | `max-age=31536000` | Кэшировать 1 год (рекомендуется) | | `includeSubDomains` | Применять ко всем поддоменам | | `preload` | Запрос на включение в браузерный preload list |

Конфигурация Nginx

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

Конфигурация Apache

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

HSTS Preload

Домен с HSTS Preload включается в браузер на уровне сборки — защищает даже при первом посещении. Требования: max-age ≥ 1 год, includeSubDomains, preload. Подача: hstspreload.org

**Важно:** Преload — необратимо. Удаление из списка занимает месяцы.

Порядок включения

1. Настройте HTTPS на всех поддоменах 2. Добавьте заголовок с малым `max-age=300` 3. Убедитесь, что всё работает 4. Увеличьте до `max-age=31536000`