Проверка сайта на соответствие РКН и 152-ФЗ

Mixed content: как найти и исправить смешанное содержимое на сайте

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

Это и называют mixed content — смешанным содержимым. Страница защищена, а отдельные элементы внутри неё — нет.

Разбираемся, почему это происходит, чем грозит и как это исправить.

Что такое Mixed Content и почему он появляется

Когда пользователь открывает сайт по HTTPS, браузер ожидает, что все ресурсы на этой странице — картинки, скрипты, стили, видео — тоже загрузятся по защищённому соединению.

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

1

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

Данные передаются в открытом виде. Любой, кто находится между пользователем и сервером, может их перехватить и прочитать. Это базовый протокол без шифрования.

2

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

Данные шифруются с помощью SSL/TLS-сертификата. Перехваченный трафик невозможно прочитать без ключа. Браузер показывает замок в адресной строке.

3

Почему возникает конфликт

Когда сайт переходит с HTTP на HTTPS, ссылки на ресурсы внутри страниц часто остаются прежними — с явным указанием http://. В результате страница защищена, а картинки, скрипты или стили загружаются без шифрования.

Самая частая причина появления ошибки — переезд сайта на SSL-сертификат. До переезда все ссылки прописывались с http://, и после смены протокола они никуда не делись: они по-прежнему указывают на незащищённые адреса.

Вторая причина — внешние ресурсы. Сайт подключает стороннюю библиотеку, виджет, шрифт или счётчик аналитики, и этот внешний сервис отдаёт файлы по HTTP, даже если сам сайт работает по HTTPS.

Типы смешанного содержимого

Не весь смешанный контент одинаково опасен. Браузеры делят его на два типа — в зависимости от того, насколько серьёзно незащищённый ресурс может повлиять на страницу.

Пассивное содержимое

К нему относятся изображения, аудио и видео — ресурсы, которые отображаются на странице, но не могут изменить её поведение или прочитать данные пользователя.

Браузеры обычно загружают такие ресурсы, но помечают страницу как частично незащищённую. Замок в адресной строке может перечёркиваться или меняться на значок с предупреждением.

Примеры: картинка на странице, загружаемая по http://, встроенное аудио с незащищённого источника, видео с HTTP-ссылкой.

Активное содержимое

Это скрипты, таблицы стилей (CSS), iframe, шрифты и другие ресурсы, которые могут напрямую взаимодействовать с содержимым страницы, читать куки, перехватывать данные форм и изменять поведение браузера.

Современные браузеры полностью блокируют активный mixed content. Если скрипт загружается по HTTP — он не выполнится. Страница может сломаться или потерять функциональность.

Примеры: файл JavaScript, подключённый через http://, CSS-стиль с незащищённого сервера, iframe с HTTP-адресом.

Почему активное содержимое опаснее

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

Чем опасен смешанный контент для безопасности

Иллюзия защищённости — вот в чём главная проблема. Пользователь видит HTTPS и замок, думает, что данные в безопасности, и спокойно вводит логин, пароль или данные карты. Но часть соединения при этом остаётся открытой.

1

Атака «человек посередине» (MITM)

Если незащищённый скрипт или стиль перехватывается в пути от сервера к браузеру, злоумышленник может подменить его содержимое. Подменённый скрипт выполнится в браузере пользователя с теми же правами, что и родной код сайта.

2

Кража персональных данных и куки

Подменённый активный ресурс может прочитать содержимое страницы, перехватить данные форм и скопировать файлы cookie — в том числе сессионные, которые дают доступ к аккаунту пользователя.

3

Потеря доверия пользователей

Браузеры Chrome, Firefox и Safari показывают предупреждение при обнаружении mixed content. Пользователь видит «Не защищено» или перечёркнутый замок и, как правило, покидает сайт.

Последствия Mixed Content для SEO-продвижения

Переезд на HTTPS — один из сигналов, который поисковые системы учитывают при ранжировании. Но если после переезда сайт выдаёт ошибки смешанного содержимого, часть этого преимущества теряется.

error_outline

Снижение позиций

Google и Яндекс учитывают безопасность как фактор ранжирования. Сайт с предупреждениями о незащищённом соединении воспринимается как менее надёжный.

error_outline

Рост показателя отказов

Маркировка «Не защищено» в адресной строке заставляет пользователей покидать страницу до взаимодействия с контентом. Поведенческие факторы ухудшаются, и позиции падают.

error_outline

Проблемы с индексацией

Ресурсы, заблокированные браузером, не загружаются. Это может влиять на рендеринг страницы роботом — поисковик получает неполную версию контента.

Технические проблемы сайта нередко идут в связке с другими нарушениями. Пока разбираетесь с mixed content, имеет смысл заодно проверить обработку персональных данных на сайте — многие сайты одновременно нарушают и технические стандарты безопасности, и требования закона.

Как обнаружить смешанное содержимое на сайте

Проверить сайт на mixed content можно несколькими способами — от простого визуального осмотра до полного сканирования всех страниц.

1

Визуальная проверка адресной строки

Самый быстрый способ. Откройте страницу в Chrome или Firefox и посмотрите на замок слева от адреса. Перечёркнутый замок или значок с предупреждением — признак проблемы. Кликните на иконку: браузер покажет, что именно загружается небезопасно.

2

Консоль разработчика (DevTools)

Нажмите F12 или Ctrl+Shift+I, перейдите на вкладку Console. Браузер покажет предупреждения и ошибки, связанные с mixed content. Каждое сообщение содержит точный адрес проблемного ресурса.

Дополнительно можно открыть вкладку Network и отфильтровать запросы по протоколу — все HTTP-ресурсы будут видны сразу.

3

Screaming Frog SEO Spider

Инструмент сканирует все страницы сайта и выводит список ресурсов, загружаемых по HTTP. Подходит для крупных сайтов, где вручную проверить каждую страницу нереально. В бесплатной версии можно проверить до 500 URL.

4

Онлайн-сервисы для проверки

Сервисы вроде Saitscan.ru позволяют проверить конкретную страницу без установки инструментов. Вводите URL — получаете список проблемных ресурсов с указанием протокола.

Способы исправления ошибки Mixed Content

Большинство проблем решается заменой HTTP-ссылок на HTTPS или настройкой автоматического перенаправления. Конкретный способ зависит от того, где именно прописаны проблемные ссылки.

Замена абсолютных ссылок на относительные

Абсолютная ссылка — это когда в коде явно прописан протокол: http://example.com/style.css. Относительная ссылка выглядит иначе: /style.css или //example.com/style.css.

Браузер автоматически добавляет к относительной ссылке тот же протокол, по которому открыта страница. Если страница загружена по HTTPS — ресурс тоже запросится по HTTPS.

Это самый чистый способ. Ссылки в формате //example.com/file.js называют протоколо-независимыми — они работают и по HTTP, и по HTTPS.

Настройка редиректа в .htaccess

Если сайт работает на сервере Apache, можно добавить правило в файл .htaccess, которое будет автоматически перенаправлять все HTTP-запросы на HTTPS.

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Это не заменяет исправление ссылок в коде, но помогает перехватывать запросы к ресурсам, о которых забыли. На серверах Nginx аналогичное правило настраивается в конфигурационном файле.

Заголовок Content-Security-Policy: upgrade-insecure-requests

HTTP-заголовок, который можно добавить через сервер или тег meta. Он даёт браузеру команду: все HTTP-запросы со страницы автоматически менять на HTTPS, не выдавая ошибок.

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

Это быстрое и эффективное решение, особенно если ссылок много и заменять их вручную долго. Важно понимать, что этот способ не исправляет код — он только инструктирует браузер. Если сторонний сервер не поддерживает HTTPS, ресурс всё равно не загрузится.

Сторонние скрипты и внешние библиотеки

Отдельная история — внешние ресурсы: CDN-библиотеки, счётчики аналитики, пиксели рекламных систем, виджеты чата. Если они подключены через http://, замена на https:// обычно достаточна — большинство крупных сервисов давно поддерживают защищённый протокол.

Если сторонний сервис вообще не поддерживает HTTPS — от него нужно отказаться или найти альтернативу. Держать на странице HTTP-скрипт ради устаревшего сервиса не стоит.

Исправление в популярных CMS

WordPress. Самый частый источник проблем — записи в базе данных, где картинки и ссылки сохранены с http://. Плагин Better Search Replace позволяет найти все вхождения http:// и заменить их на https:// по всей базе. После замены нужно очистить кеш.

Bitrix. В настройках сайта есть раздел, где прописывается основной домен. Если там указан HTTP — весь генерируемый контент будет с незащищёнными ссылками. Смена домена в настройках и переиндексация базы решает большинство случаев. Дополнительно стоит проверить шаблоны страниц: в них могут быть жёстко прописанные http:// адреса.

Проверка корректности исправлений

После внесения изменений важно убедиться, что проблема действительно устранена, а не просто перестала бросаться в глаза.

1

Повторная проверка в браузере

Открыть страницы, где была проблема, в режиме инкогнито (без кеша) и снова проверить консоль разработчика. Если предупреждений о mixed content нет — исправление прошло успешно.

2

Панели вебмастеров

Яндекс.Вебмастер и Google Search Console фиксируют проблемы с безопасностью. После исправления ошибок запросите повторную проверку — панели обновятся и покажут актуальный статус.

3

Тест SSL-сертификата

Сервис SSL Labs (ssllabs.com/ssltest) выставляет оценку защищённости сайта. Сайт без mixed content и с корректно настроенным сертификатом получает оценку A или A+. Если оценка ниже — в отчёте будут объяснения.

4

Комплексная проверка сайта

Технические проблемы нередко соседствуют с другими — отсутствующей политикой конфиденциальности, несоблюдением требований к согласию на cookie, устаревшими документами. Имеет смысл запустить проверку сайта на соответствие требованиям целиком.

Частые вопросы

Сайт показывает замок, но в консоли есть предупреждения о mixed content — это опасно?

expand_more
Зависит от типа контента. Если это пассивное содержимое (картинки), браузер обычно загружает его, но страница считается частично незащищённой. Если это активный контент (скрипты, стили), браузер его блокирует — страница может работать некорректно. В любом случае предупреждения нужно устранять.

Можно ли просто добавить заголовок upgrade-insecure-requests и забыть о проблеме?

expand_more
Частично. Заголовок помогает браузеру автоматически переключать HTTP-запросы на HTTPS, если сервер их поддерживает. Но если ресурс доступен только по HTTP — он всё равно не загрузится. Это временное решение, а не замена правке кода.

После замены HTTP на HTTPS в ссылках сайт стал медленнее — это нормально?

expand_more
Само по себе — нет. HTTPS не делает сайт медленнее заметно. Если скорость упала, возможная причина — внешние ресурсы, которые теперь загружаются по HTTPS с медленного сервера, или редиректы, которые добавляют лишние шаги при загрузке страницы.

Нужно ли исправлять mixed content, если сайт — простая визитка без форм?

expand_more
Да. Даже на информационном сайте без форм предупреждение браузера о небезопасном соединении отпугивает посетителей. Кроме того, это влияет на SEO: поисковые системы учитывают наличие HTTPS как фактор ранжирования.

Как mixed content связан с персональными данными?

expand_more
Напрямую. Если на странице с формой — например, заявкой или регистрацией — есть активный mixed content, злоумышленник может перехватить введённые данные: имя, телефон, пароль. Это не только технический риск, но и нарушение обязательства оператора обеспечить защиту персональных данных.

Браузер блокирует скрипт из-за mixed content, и форма на сайте перестала работать. Что делать?

expand_more
Найти скрипт, который загружается по HTTP, и заменить его адрес на HTTPS-версию. Откройте консоль разработчика — там будет указан точный URL заблокированного ресурса. Если скрипт подключается из внешнего сервиса, проверьте, поддерживает ли он HTTPS: большинство современных CDN и API работают по защищённому протоколу.

Главное

Mixed content возникает, когда HTTPS-страница загружает часть ресурсов по HTTP. Чаще всего это последствие переезда на защищённый протокол: ссылки в коде остались прежними.

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

Для сайтов, которые собирают данные через формы, устранение mixed content — не опциональная мера, а базовая защита пользователей. Незащищённый скрипт на странице с формой — прямой путь к перехвату введённых данных.

Исправление в большинстве случаев занимает несколько часов: найти проблемные ресурсы через DevTools, заменить HTTP на HTTPS в ссылках, добавить заголовок upgrade-insecure-requests как дополнительную страховку. После этого — проверить результат в браузере и в панелях вебмастеров.