Проверка смешанного контента

HTML для проверки

Обнаруживает ресурсы http://, загруженные внутри HTTPS-страницы.

Далее

После перехода сайта на протокол HTTPS случайные теги <img>, <script>, <link> или <iframe>, которые по-прежнему указывают на http://..., нарушают функционирование зелёного замка и в современных браузерах часто не загружаются полностью. Введите URL, инструмент проверки загрузит страницу, проанализирует все подресурсы (изображения, стилевые файлы, скрипты, шрифты, интерактивные рамки, видео, аудио) и выявит все ресурсы, передаваемые по простому HTTP, чтобы вы могли устранить их недостатки до появления предупреждения «не полностью безопасно».

Как работает сканирование

  1. 1

    Введите URL

    URL по протоколу HTTPS. Сканер выполняет один переход через перенаправление.

  2. 2

    Страница была загружена

    HTML анализируется для каждой ссылки на подресурс.

  3. 3

    Каждый ссылочный элемент классифицируется.

    HTTPS, HTTP или протокольно-относительный формат (`//cdn...`).

  4. 4

    Отчёт, группированный по типу

    Активный и пассивный контент с рейтингом степени серьезности

Активный и пассивный смешанный контент

Браузеры по-разному обрабатывают два класса:

  • Активный смешанный контент (скрипты, iframe, таблицы стилей, XHR/fetch, воркеры, WebSockets). Полностью блокируется современными браузерами. Включает: <script>, <link rel="stylesheet">, <iframe>, fetch(), XMLHttpRequest, importScripts().
  • Пассивный смешанный контент (изображения, видео, аудиопостеры). Загружается, но помечается, замок пропадает, и в адресной строке появляется предупреждение. Включает: <img>, <audio>, <video>, цели action у форм.

Почему это важно

  • Доверие. Сломанный замок сигнализирует «этот сайт небезопасен» пользователям, которые это замечают.
  • Функциональность. Заблокированный активный контент означает, что скрипты не выполняются, а таблицы стилей не применяются, страницы выглядят сломанными.
  • SEO. Google предпочитает страницы на HTTPS; неисправные сигналы HTTPS косвенно вредят позициям.
  • Соответствие требованиям. PCI DSS и многие другие стандарты соответствия требуют HTTPS без смешанного контента на страницах с платежами.

Распространённые источники

Источник Типичное решение
Устаревший CDN по HTTP Перейти на CDN с поддержкой HTTPS
Старый код встраивания YouTube / Vimeo Обновить код встраивания до текущей версии
URL-адреса скриптов рекламных сетей Использовать версию HTTPS (доступна уже много лет)
Сторонние шрифты и карты Заменить http://fonts.googleapis.comhttps://
Виджеты кнопок соцсетей Использовать актуальный код виджета
URL изображений, загруженных пользователями Переписывать при сохранении; загружать через прокси при отображении
Жёстко прописанные URL в статьях блога Массовый поиск и замена в базе данных

Стратегии исправления

  1. URL, относительные к протоколу (//cdn.example.com/a.js). Загружаются с протоколом текущей страницы. Безопасны для большинства CDN, но устарели, предпочитайте явный https://....
  2. Перепишите в исходном коде. Обновите шаблоны и контент, чтобы использовать https://. Просканируйте кодовую базу регулярным выражением: http://(?!localhost).
  3. Обновление Content Security Policy. Content-Security-Policy: upgrade-insecure-requests указывает браузеру незаметно переписывать URL-адреса HTTP-ресурсов на HTTPS. Лучший вариант для сайтов, которые не могут проверить каждый URL.
  4. <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">, встроенный эквивалент.
  5. Проксируйте ресурсы, доступные только по HTTP, через ваш HTTPS-источник, если на вышестоящем сервере действительно нет конечной точки HTTPS (сегодня редкость).

Что находит проверяющий

  • Все внешние URL-адреса, на которые ссылаются <img>, <script>, <link>, <iframe>, <video>, <audio>, <source>.
  • Атрибуты action у форм.
  • Ссылки url(...) во встроенном CSS внутри блоков <style>.
  • Не сканирует ресурсы, внедрённые через JavaScript, они добавляются во время выполнения и требуют проверки на стороне браузера (панель Issues в Chrome DevTools их обнаруживает).

Часто задаваемые вопросы

Отчасти. Заголовок upgrade-insecure-requests CSP или мета-тег указывают браузерам автоматически преобразовывать URL подресурсов в формате HTTP в формат HTTPS. Это работает только при поддержке сервером протокола HTTPS; если исходный сервер использует только HTTP, преобразование не произойдёт.

Нет. Речь идет только о ресурсах, указанных в статическом HTML-коде; скрипты, создающие элементы <img> во время выполнения, не будут отображаться. Панель проблем Chrome DevTools автоматически обнаруживает такие случаи в браузере.

Эти метки безопасны для страниц с смешанным контентом в режиме HTTPS (они наследуют соответствующие свойства протокола HTTPS). Однако они не работают на внутренних инструментах, работающих только по протоколу HTTP, а также на архивированных страницах; кроме того, их использование устарело. Рекомендуется использовать явный меток https://.

Кэш браузера. Для проверки исправления выполните полный обновление страницы (Ctrl+Shift+R / Cmd+Shift+R) или протестируйте в окне инкогнито. Текущее состояние отображается в отчетах CSP и предупреждениях консоли.

Серверный модуль загрузки получает страницу для анализа; сам URL не сохраняется после отправки запроса.

Сопутствующие инструменты

Проверка длины мета-описания

Измерьте мета-описание в символах и расчётных пикселях, сравните редакционные ориентиры и макеты для компьютера и телефона.

Инструмент проверки заголовков безопасности HTTP

Вставьте HTTP-заголовки ответа и локально проверьте HSTS, CSP, clickjacking, MIME, referrer и политики cross-origin.

Канонический генератор тегов

Создайте действительный тег ссылки rel=canonical для любого URL. Включает проверку URL и типичные ошибки, которых следует избегать.

Симулятор выдачи Google

Посмотрите приблизительный сниппет в стиле Google с лимитами символов для телефона и компьютера. Черновик остаётся в текущем сеансе браузера.

Валидатор XML-карты сайта

Проверьте XML-карту сайта в браузере: ошибки разбора, отсутствующие адреса, повторы URL и распространённые значения полей.

Инструмент для извлечения внешних ссылок

Вставьте сырой HTML-код, при желании укажите базовый URL и получите чистый список без дубликатов всех внешних ссылок http/https в коде для проверки ссылок и анализа SEO.

Инструмент доступен на других языках