hostprofi.ru
Подобрать хостинг
Термин·буква M

Mixed content

краткое определение

Mixed content — ситуация, когда HTTPS-страница загружает ресурсы (изображения, скрипты, стили) по незащищённому HTTP. Браузеры блокируют активный mixed content и предупреждают о пассивном.

Mixed content — ситуация, когда страница загружена по HTTPS, но часть ресурсов запрашивается по незащищённому HTTP. Браузер видит несоответствие: соединение с сервером шифруется, но встроенные ресурсы передаются открытым текстом — это создаёт потенциальную уязвимость для атаки Man-in-the-Middle. Замок HTTPS в адресной строке при наличии mixed content отображается с предупреждением или вовсе отсутствует.

Виды mixed content

Active mixed content (активный)
Скрипты <script src="http://...">, стили <link href="http://...">, iframe, XMLHttpRequest/fetch к HTTP, объекты Flash. Браузер блокирует активный mixed content автоматически с 2015–2019 годов во всех основных браузерах. Подмена скрипта через HTTP позволяет атакующему выполнить произвольный JavaScript на странице.
Passive mixed content (пассивный)
Изображения <img src="http://...">, аудио <audio>, видео <video>. С Chrome 80 (февраль 2020) и Firefox 84 (2020) пассивный mixed content автоматически апгрейдится до HTTPS или блокируется. Риск ниже, чем у активного, но подмена изображений возможна.

Как обнаружить

DevTools → вкладка Console: ошибки вида Mixed Content: The page at 'https://...' was loaded over HTTPS, but requested an insecure resource. Вкладка Network с фильтром mixed-content. Онлайн-инструменты: Why No Padlock, SSL Labs Server Test (секция Mixed Content). Для сканирования всего сайта — Screaming Frog SEO Spider с фильтрацией по HTTP-ресурсам.

Как исправить

Заменить все http:// на https:// или на протокол-относительные URL //example.com/resource. В WordPress — плагин Really Simple SSL автоматически меняет URL в контенте. Для массовой замены в базе данных WP-CLI: wp search-replace 'http://example.com' 'https://example.com' --skip-columns=guid. В Nginx добавить заголовок, апгрейдящий все HTTP-запросы:

add_header Content-Security-Policy "upgrade-insecure-requests";

Директива upgrade-insecure-requests в .htaccess Apache и заголовок HTTP Content-Security-Policy: upgrade-insecure-requests автоматически переписывают HTTP-ресурсы на HTTPS на стороне браузера без изменения HTML.

История

Термин «mixed content» стандартизирован W3C в спецификации Mixed Content Level 1 в 2015 году. Chrome начал блокировать активный mixed content в 2015 году. Firefox — в 2015–2016 годах. Хронология ужесточения: Chrome 79 (декабрь 2019) — предупреждения о пассивном mixed content; Chrome 80 (февраль 2020) — авто-апгрейд аудио/видео; Chrome 81 (апрель 2020) — авто-апгрейд изображений. К 2021 году все браузеры блокируют или апгрейдят оба типа.

Mixed content и SEO

Google Chrome с 2018 года помечает HTTP-страницы как «Not Secure», а в 2020-м усилил блокировку mixed content. Страницы с незаблокированным mixed content могут получить предупреждение в браузере, что снижает доверие пользователей и косвенно влияет на поведенческие метрики SEO. После перевода сайта на HTTPS аудит на mixed content — обязательный этап.

На что обращать внимание

Наиболее частые источники mixed content: жёстко прописанные HTTP-ссылки на изображения в базе данных CMS, сторонние виджеты (старые кнопки соцсетей, виджеты погоды), инлайновый CSS с background: url('http://...'), встроенные видео и аудиоплееры. Проверяй не только главную страницу, но и внутренние страницы — особенно старые материалы с прикреплёнными медиафайлами.

Другие термины

Mixed content — что это, определение и как работает | Справочник — hostprofi.ru