Перейти к содержимому
SEO/Опубликовано 21 сентября 2026 г./5 мин

HSTS и смешанное содержимое: обход 187 сайтов

Заголовок Strict-Transport-Security при обходе нашёлся у 35 сайтов из 187, преднагрузку объявили восемь, а в списке Chromium нет ни одного. Смешанного содержимого оказалось вдвое меньше, чем показала первая проверка.

HSTS и смешанное содержимое: обход 187 сайтов
С
Команда NEXFORCE
SEO-эксперт NEXFORCE

Взяли те же 264 домена компаний Екатеринбурга, на которых считали поломки индексации, и посмотрели на другую сторону: как у них устроено шифрование. Замер 19 сентября 2026 года, живых главных — 196.

Девять из 196 не отдают защищённое соединение вообще

Первое, что выяснилось: шифрование есть не у всех. У девяти адресов запрос по защищённому протоколу не проходит:

Что случилосьСколько
сертификат не проходит проверку3
соединение не установилось3
ответа не дождались2
неверная версия протокола1

Восемь из этих девяти прекрасно живут по незащищённому адресу — человек попадёт на рабочую страницу и увидит в адресной строке пометку «Не защищено». Девятый не отвечает никак.

Дальше речь про оставшиеся 187.

Заголовок Strict-Transport-Security: нашёлся у 35 из 187

Это меньше пятой части. Разберём, что он делает, потому что цифра сама по себе ничего не значит.

Человек набирает адрес без указания протокола. Браузер по умолчанию идёт по незащищённому, получает перенаправление и уходит на защищённый. Всё это занимает доли секунды, но первый запрос ушёл открытым текстом, и подменить ответ в этот момент можно. HSTS убирает этот шаг: браузер, однажды увидев заголовок, следующие max-age секунд сразу идёт по защищённому адресу.

Отсюда и главная оговорка: заголовок начинает работать только со второго захода. Первый всё равно уходит открытым.

Длительность: год у большинства, пять минут у одного

max-ageСколько сайтов
год (31536000)26
больше года3
от полугода до года1
от месяца до полугода2
меньше месяца3

Самое короткое значение — 300 секунд. Через пять минут после ухода посетителя защита испаряется, и следующий его заход снова начнётся с открытого запроса. Это не ошибка настройки: так делают, когда осторожно пробуют. Но пробу надо доводить до года, иначе смысла нет.

Область действия сужена почти у всех: includeSubDomains объявили 10 из 35. Без него поддомены под защиту не попадают, и если у компании есть shop. или lk., они остаются с тем же открытым первым запросом.

Восемь объявили преднагрузку, в списке нет ни одного

Отдельный уровень — список предзагрузки. Домены из него зашиты прямо в браузер, и тогда даже самый первый заход идёт по защищённому протоколу. Попасть туда можно только заявкой на hstspreload.org, а флаг preload в заголовке — условие, а не заявка.

Восемь сайтов флаг поставили. Ни одного из них в списке нет.

Проверяли двумя способами, потому что первый оказался ненадёжным. Ответ API hstspreload.org на все восемь — «неизвестен», но контрольный запрос про google.com дал тот же ответ, хотя google.com в браузере предзагружен. Тогда скачали сам файл transport_security_state_static.json из исходников Chromium — 94 778 записей — и проверили по нему. Контроль: github.com в файле есть, google.com нет (домены Google зашиты в код отдельно). Все восемь наших — отсутствуют.

Заодно видно, почему заявки бы и не прошли: у трёх из восьми не выполнены формальные условия списка — нет includeSubDomains, а у одного вдобавок незащищённый адрес не перенаправляет на защищённый.

Смешанное содержимое: сначала 18, после уточнения 8

Здесь замер поймал на ошибке нас самих, и это важнее самой цифры.

Первая проверка искала в коде главной любой тег с адресом на незащищённом протоколе и насчитала 18 сайтов. Прежде чем записывать это в результат, мы посмотрели, что именно нашлось, — и половина оказалась ложной. Под правило попадали <link rel="canonical"> и rel="alternate": это не загружаемые ресурсы, а ссылки, браузер по ним ничего не качает и ничего не блокирует.

После уточнения правила — только стили, скрипты, кадры, картинки и шрифты — осталось восемь:

Что подгружается открытоСколько сайтов
скрипт, стиль или кадр (браузер блокирует)4
картинка или шрифт (браузер пропускает с замечанием)6
форма отправляется на открытый адрес1

Что именно находится: шрифты Google, подключённые по старому адресу; скрипты счётчиков; карта одного из картографических сервисов. Один сайт грузит скрипт совместимости со старым браузером с хостинга, который Google закрыл в 2016 году, — адрес до сих пор отвечает кодом 404.

Разница между активным и пассивным — не про степень вины, а про то, что увидит посетитель. Заблокированный стиль означает страницу без оформления; пропущенная картинка — только предупреждение в консоли.

Десять сайтов открываются по обоим адресам

Незащищённый адрес отвечает кодом 200 и никуда не ведёт у десяти сайтов из 187. Это ровно тот же дефект, что мы уже считали в разборе индексации: одна страница доступна по двум адресам, поисковик выбирает основной сам. У девяти из этих десяти прошлый замер показал две-три несклеенные версии главной.

Заголовок HSTS тут не спасает: браузер его запомнит, а робот поисковика всё равно знает оба адреса.

Чего этот замер не говорит

Смотрели только главную и только то, что видно снаружи в одном запросе. Внутренние страницы могут грузить открытые ресурсы там, где главная чиста. Про качество сертификата — кем выдан, когда истекает — не спрашивали вовсе. И выборка городская: 187 главных страниц Екатеринбурга, а не рунет.

Коротко

  • Защищённое соединение не работает у 9 адресов из 196; восемь из них открываются по незащищённому и выглядят рабочими.
  • Заголовок HSTS стоит у 35 из 187, год выдержки — у 26, область расширена на поддомены только у 10.
  • Преднагрузку объявили восемь, в списке Chromium нет ни одного.
  • Смешанное содержимое нашлось у восьми; первая проверка называла 18, и половину пришлось снять как ложное срабатывание.
  • Десять сайтов открываются по обоим протоколам без перенаправления — это дубль главной, а не вопрос безопасности.
Вопросы и ответы

FAQ по теме

Что такое HSTS простыми словами?+
Это заголовок ответа Strict-Transport-Security. Он говорит браузеру: следующие столько-то секунд ходи на этот адрес только по защищённому протоколу, даже если человек набрал адрес без него. Заголовок закрывает окно между набором адреса и первым перенаправлением — именно в этом окне запрос можно перехватить.
HSTS влияет на позиции в поиске?+
Прямо — нет, отдельного фактора «есть HSTS» ни Яндекс, ни Google не объявляли. Косвенно влияет то, что он делает: одна схема вместо двух, значит нет дублей главной. У десяти сайтов из нашей выборки адрес без шифрования отвечает кодом 200 и никуда не ведёт — это готовый дубль.
Какой max-age ставить?+
Год, то есть 31536000 секунд: столько у 26 из тех 35, где заголовок при обходе нашёлся. Начинать разумно с малого значения и поднимать, когда убедились, что всё работает по защищённому протоколу. Оставлять маленьким бессмысленно: у одного сайта в выборке max-age равен 300 секундам, и защита живёт пять минут после ухода посетителя.
Что такое смешанное содержимое?+
Страница открыта по защищённому протоколу, а какой-то её кусок — картинка, стиль, скрипт — подгружается по незащищённому. Скрипты и стили браузер блокирует молча, картинки пропускает с замечанием в консоли. В нашей выборке такое нашлось у восьми сайтов из 187.
Как проверить свой сайт?+
Откройте консоль браузера на главной и посмотрите вкладку «Проблемы»: смешанное содержимое там названо прямо. Заголовок видно в инструментах разработчика на вкладке «Сеть» в ответе первого запроса, или командой curl -sI с адресом сайта. Наличие в списке предзагрузки проверяется на hstspreload.org.