HSTS: принудительный HTTPS для защиты сайта

Безопасность · 19.04.2026
HSTS: принудительный HTTPS для защиты сайта

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

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

  1. Браузер впервые посещает сайт по HTTPS
  2. Получает заголовок Strict-Transport-Security
  3. Сохраняет домен в список HSTS на время max-age
  4. При следующем визите — автоматически открывает HTTPS без редиректа с сервера

Настройка через .htaccess

<IfModule mod_headers.c>
    # Базовый HSTS: 1 год
    Header always set Strict-Transport-Security "max-age=31536000"
    
    # С включением поддоменов
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    
    # С preload (для включения в браузерный список)
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</IfModule>

Настройка через Nginx

server {
    listen 443 ssl;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
}
⚠️ Начните с max-age=300 (5 минут) для тестирования. Переключитесь на 31536000 только после того, как убедитесь что HTTPS работает идеально на всех поддоменах.

HSTS Preload

Директива preload позволяет добавить домен в встроенные списки браузеров. Это означает, что HTTPS будет форсироваться даже при первом посещении (до получения заголовка):

  • Подать заявку: hstspreload.org
  • Требования: max-age не менее 1 года, includeSubDomains, действующий HTTPS на поддоменах
💡 После включения в preload-список удаление занимает месяцы. Добавляйте только если уверены, что HTTPS будет постоянным.

Проверка HSTS

# curl
curl -I https://example.com | grep Strict

# Или Chrome DevTools:
# Network → ваш запрос → Response Headers → Strict-Transport-Security
← Назад в базу знаний Задать вопрос поддержке