Как HSTS обрабатывает смешанный контент?

Я только что проверил с помощью SSL-теста сервера, правильно ли я реализовал SSL-сертификат на своем сервере. Я получил оценку A в их рейтинге, но вы можете получить A+, если вы активировали HSTS. После некоторого поиска я узнал, что Google может рассматривать HSTS как фактор ранжирования. Так что это кажется актуальным с точки зрения SEO. Перед внедрением HSTS у меня есть несколько вопросов.

Вопрос 1

Что произойдет, если некоторые внешние javascript-коды загружают, например, изображение через http (вместо https) на моем сайте? Будет ли HSTS препятствовать загрузке всей страницы или блокировать только определенный "небезопасный" контент?

вопрос 2

На данный момент (без HSTS) я получаю предупреждение "смешанный контент", если ресурсы загружаются через http. Существует ли "смешанный контент", если HSTS активирован?

3 ответа

HSTS вообще не пытается обрабатывать смешанный контент: он просто контролирует, должен ли браузер выполнять внутренний 307 перенаправлять на HTTPS всякий раз, когда он пытается загрузить URL-адреса HTTP, или нет. Предупреждение о смешанном контенте является функцией браузера, и все текущие браузеры делают это (Mozilla Firefox 23+, Google Chrome 21+, Internet Explorer 10+, Edge с самого начала...). Блоки предупреждения о смешанном контенте, например <script> а также <iframe>, но нет <img>,

Предупреждение о смешанном контенте во всех упомянутых браузерах проверяется перед загрузкой какого-либо контента вообще, то есть перед перенаправлением HSTS. Это кажется естественным и легко проверяется. По умолчанию все внешние изображения загружаются даже с использованием простого HTTP, а предупреждение о смешанном содержимом выдается только для сценариев и фреймов.

HSTS только изменяет ситуацию, когда изображение из домена с поддержкой HSTS загружается с использованием простого HTTP, и 307 Internal Redirect выполняется. Стоит отметить: это ситуация, в которой отсутствуют предупреждения о смешанном содержании.

Поэтому HSTS не работает как быстрое решение проблемы смешанного контента:

  • Вам нужно исправить http:// URL на вашем сайте даже для самого домена.
  • Вы должны убедиться, что вы не загружаете внешние скрипты из источников, которым вы не доверяете.
    • Если третья сторона не активирует HSTS, она все еще уязвима для атак "человек посередине".
    • Третьи стороны могут загружать контент из других внешних источников, и все это относится и к ним.
    • Сайт с внешним контентом может быть взломан или выполнять вредоносные действия самостоятельно.

Я думаю, что ответ на этот вопрос будет зависеть от того, размещены ли скрипты, на которые вы ссылаетесь, в домене, для которого включен HSTS.

Например, если вы обслуживаете свой контент из mydomain.com и включить HSTS для этого домена (и, возможно, также для поддоменов), но сценарии и другой смешанный контент, на который вы ссылаетесь, обслуживаются из otherdomain.com который не включает HSTS, тогда возможно смешанное содержимое, и браузер все равно предупредит об этом.

То, что HSTS остановит (и поможет исправить смешанное содержимое), - это ресурсы, связанные через HTTP в том же домене - и, возможно, субдомен в зависимости от вашей конфигурации - поскольку они будут "обновлены" до HTTPS автоматически.

Это сделано специально: если HSTS работает, он получит правильное изображение (галочка через HTTPS) и, если нет, метку X по HTTP.

Надеемся, что браузеры перестанут представлять предупреждения о смешанном контенте для контента, обновленного до HTTPS через HSTS.:)

Другие вопросы по тегам