Разное

Mixed content: Mixed content — Web security

13.04.2023

Содержание

Что такое смешанное содержимое (mixed content) и как его исправить

Вы уже выбрали и установили SSL-сертификат на ваш сайт, чтобы защитить персональные данные ваших клиентов, но почему-то не видите заветный закрытый замочек в браузере?

Возможно вы вместо закрытого замка видите желтый треугольник и сообщение, что соединение защищено не полностью и ваш сайт вообще не отображается корректно при обращении по https?

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

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

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

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

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

К элементам пассивного содержимого относятся:

  • <audio> (атрибут src)
  • <img> (атрибут src)
  • <video> (атрибут src)
  • <object> (когда <object> выполняет запросы по HTTP)

В браузерах пассивное смешанное содержимое выглядит так:

Активное смешанное содержимое — это элементы, которые являются частью DOM, и потому их подмена может изменить поведение всей веб-страницы, загружаемой по HTTPS, что может привести, например, к краже паролей у посетителя. При перехватите и подмене активного содержимого злоумышленник может внедрить в страницу свой сторонний скрипт, который будет способен загрузить на хостинг вирус через уязвимости в плагинах CMS или получить какие-либо ценные данные пользователя. Такой тип смешанного контента более опасен, потому большинство браузеров блокируют загрузку активного контента по HTTP, если страница запрашивается по HTTPS.

Активным содержимым являются следующие элементы:

  • <script> (атрибут src)
  • <link> (атрибут href) (включая CSS)
  • XMLHttpRequest и его запросы
  • <iframe> (атрибут src)
  • Все случаи, когда в CSS используется параметр url (@font-face, cursor, background-image и т.д.)
  • <object> (атрибут data)

Отображение блокировки активного смешанного содержимого в браузерах:

2. Как исправить ошибки смешанного содержимого?

Если коротко, чтобы убрать ошибки смешанного содержимого, нужно привести все ссылки в единый вид — или относительные, или абсолютные с протоколом HTTPS. 1$ RewriteRule .? — [E=HTTPS:on]

Эти правила исправляют ссылки, которые не прописаны жестко в коде тем, шаблонов, и не являются ссылками на внешние ресурсы.

Если вам пришлось вручную менять ссылки по каким-то причинам, например, у вас самописный движок или статический HTML-сайт, то вам будет проще увидеть все неправильные ссылки в инструментах разработчика в вашем браузере на вкладке “Консоль”.

Как исправить mixed content при использовании протокола HTTPS

13265

How-to – Читать 8 минут

Прочитать позже

АУДИТ САЙТА — СЕРТИФИКАТ HTTPS

Инструкцию одобрил
генеральный директор Интоп-Медиа

Евгений Глущенко

Смешанный контент — это незащищенные элементы, передаваемые по HTTP-протоколу, которые размещены на страницах с SSL-сертификатом. Наличие на страницах с HTTPS-протоколом ссылок с HTTP соединением делает сайт уязвимым и негативно влияет на SEO.

Содержание

Что такое смешанный контент при HTTPS
Каким бывает смешанное содержимое на страницах
Как обнаружить и устранить незащищенный контент при HTTPS
FAQ
Заключение

Что такое смешанный контент при HTTPS

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

Соединение со страницей по протоколу HTTPS зашифровано с помощью TLS и защищено от перехвата данных злоумышленниками. Если на такой странице присутствует незащищенный контент, страница становится уязвимой — ее можно перехватить и внести изменения в исходный код. Из-за этого возникает уязвимость и соединение перестает быть защищенным.

Если на защищенной странице с соединением HTTPS размещается ссылка, которая начинается с http://, это трактуется поисковыми системами как ошибка смешанного контента, на английском — «mixed content error», которая негативно влияет на продвижение сайта.

Согласно спецификации W3C, браузеры добавляют на страницы со смешанным содержимым сообщение о незащищенном контенте и о том, что подключение к сайту защищено не полностью:

Замок с треугольником, предупреждающий о незащищенном контенте в браузере

Данную ошибку можно отследить с помощью консоли разработчиков Mozilla, а также посредством консоли JavaScript панели инструментов Google Chrome.

Предупреждение в Chrome о наличии смешанного контента — insecure image:

Предупреждение о смешанном контенте в браузере Chrome

Предупреждение в Mozilla:

Предупреждение о смешанном контенте в браузере Mozilla Firefox

Каким бывает смешанное содержимое на страницах

Mixed content делится на две группы — пассивное и активное смешанное содержимое.

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

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

К пассивному смешанному контенту относятся картинки, аудио, видео и прочие элементы, в случае перехвата которых злоумышленники могут в хулиганских целях поменять файлы на какие-то нелицеприятные, нарушив стандартную работу ресурса.

Активный смешанный контент содержит скрипты и фреймы, перехват которых может нанести урон сайту и его пользователям. К такому контенту в первую очередь относятся атрибуты src тегов <script> и <iframe>. Также к данной группе принадлежат:

  • атрибут href тега <link>;
  • атрибут data тега <object>;
  • параметр URL в стилях CSS;
  • XTMLHttpRequest, включая все его запросы.

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

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

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

Как обнаружить и устранить незащищенный контент при HTTPS

Если на проекте множество страниц, просмотреть код на всех них с помощью инструментов разработчиков браузеров — слишком трудоемкий процесс. Чтобы автоматизировать и упростить данную задачу, можно воспользоваться модулем «Аудит сайта» от Serpstat. Перейдем для этого в раздел «Сертификат HTTPS» суммарного отчета:

Аудит сайта в Serpstat

В данном отчете будут видны ошибки, связанные со смешанным контентом. Рассмотрим более подробно указанный выше пример:

Ошибочные ссылки со страниц c протоколом HTTPS на страницы HTTP.

Данную ошибку можно исправить, если заменить на указанных страницах во внутренних ссылках незащищенный протокол HTTP на HTTPS.

Страницы с HTTPS ссылаются на страницы с HTTP

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

Использование поддержки HSTS

Присутствие незащищенных элементов.

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

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

Наличие незащищенных элементов

Помимо перечисленного выше, с помощью отчета Serpstat можно узнать, не попали ли незащищенные ссылки в файл sitemap и не остались ли на проекте страницы с протоколом HTTP.

Кроме того, сайт можно дополнительно просканировать любой программой или сканером сайта типа SEO Frog. Он также выдаст полный список ссылок, которые есть на сайте как с http, так и с https.

О другом способе найти смешанный контент — с помощью краулера Netpeak Spider — рассказали наши друзья из Netpeak Software в этом посте!

Чтобы обнаружить смешанное содержимое на сайтах WordPress, можно также использовать данный плагин.

Поиск смешанного контента в консоли разработчика
Еще один способ обнаружить смешанный контент, подходящий для небольших сайтов, — воспользоваться консолью JavaScript. Зайдите в Chrome и выберите в верхнем правом углу Дополнительные инструменты → Инструменты разработчика → Консоль и просмотрите в ней сообщения об ошибках Mixed content. При их наличии исправьте URL в ссылках с http на https и проверьте HTMI-код вновь. Повторите данную процедуру для всех веб-страниц сайта.

Сообщение о смешанном контенте в консоли разработчика

Чем опасен смешанный контент?

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

Как mixed content влияет на SEO?

Смешанный контент негативно влияет на SEO, так как он ухудшает пользовательский опыт и делает страницы сайта небезопасными. Чтобы избежать проблем с продвижением ресурса, необходимо выявлять уязвимости, связанные с mixed content, и сразу же менять небезопасный протокол http на https.

Заключение

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

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

Обнаружить проблемы со смешанным контентом можно с помощью инструментов разработчиков браузеров, однако это требует продолжительного времени. Более оперативный способ — получить детальные сведения о всех проблемах, связанных с некорректным использованием протокола HTTP на сайте, с помощью Serpstat.

Сканировать сайт на предмет небезопасных ссылок нужно сразу после того, как сайт создан или переведен на https.

При исправлении ошибок в зависимости от ситуации необходимо либо менять ссылки на безопасные с https://, либо загружать нужные файлы на свой сервер с других ресурсов и затем использовать относительные ссылки.

Аудит всего сайта или отдельной страницы в один клик. Полный список ошибок, отсортированный по критичности, пути их устранения и рекомендации. Любая периодичность проверки и автоматическая рассылка отчетов на почту.

Запустить аудит сайта

Serpstat — набор инструментов для поискового маркетинга!

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

Набор инструментов для экономии времени на выполнение SEO-задач.

Получить бесплатный доступ на 7 дней

Оцените статью по 5-бальной шкале

4. 43 из 5 на основе 7 оценок

Нашли ошибку? Выделите её и нажмите Ctrl + Enter, чтобы сообщить нам.

Рекомендуемые статьи

How-to

Анастасия Сотула

Как внедрить на сайте разметку Twitter Card

How-to

Анастасия Сотула

Как создать статью в Википедии

How-to

Анастасия Сотула

Первые шаги в аффилейт-маркетинге: что такое арбитраж трафика и как на этом заработать

Кейсы, лайфхаки, исследования и полезные статьи

Не успеваешь следить за новостями? Не беда! Наш любимый редактор подберет материалы, которые точно помогут в работе. Только полезные статьи, реальные кейсы и новости Serpstat раз в неделю. Присоединяйся к уютному комьюнити 🙂

Нажимая кнопку, ты соглашаешься с нашей политикой конфиденциальности.

Поделитесь статьей с вашими друзьями

Вы уверены?

Спасибо, мы сохранили ваши новые настройки рассылок.

Сообщить об ошибке

Отменить

Смешанное содержимое — Веб-безопасность

Когда пользователь посещает страницу, обслуживаемую по протоколу HTTPS, его соединение с веб-сервером шифруется с помощью TLS и, таким образом, защищено от большинства снифферов и атак типа «человек посередине». Страница HTTPS, которая включает содержимое, полученное с использованием открытого текста HTTP, называется страницей со смешанным содержимым . Подобные страницы зашифрованы лишь частично, поэтому незашифрованный контент остается доступным для снифферов и злоумышленников. Это делает страницы небезопасными.

Существует две категории смешанного содержимого: смешанное пассивное/отображаемое содержимое и смешанное активное содержимое . Разница заключается в уровне угрозы наихудшего сценария, если контент переписывается как часть атаки «человек посередине». В случае пассивного контента угроза ниже (страница может содержать вводящий в заблуждение контент, могут быть украдены файлы cookie пользователя). В случае активного контента угроза может привести к фишингу, раскрытию конфиденциальных данных, перенаправлению на вредоносные сайты и т. д.

Смешанное пассивное/отображаемое содержимое

Смешанное пассивное/отображаемое содержимое — это содержимое, обслуживаемое через HTTP, которое включено в веб-страницу HTTPS, но которое не может изменить другие части веб-страницы. Например, злоумышленник может заменить изображение, переданное по протоколу HTTP, неприемлемым изображением или сообщением для пользователя. Злоумышленник также может получить информацию о действиях пользователя, наблюдая за тем, какие изображения предоставляются пользователю; часто изображения отображаются только на определенной странице веб-сайта. Если злоумышленник наблюдает HTTP-запросы к определенным изображениям, он может определить, какую веб-страницу посещает пользователь.

Список пассивного контента

В этом разделе перечислены все типы HTTP-запросов, которые считаются пассивным контентом:

  • ( src атрибут)
  • <аудио> ( src
    атрибут)
  • <видео> ( src атрибут)
  • <объект> подресурсы (когда <объект> выполняет HTTP-запросы)

Смешанное активное содержимое

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

В случае со смешанным активным содержимым злоумышленник-посредник может перехватить запрос HTTP-содержимого. Злоумышленник также может переписать ответ, включив в него вредоносный код JavaScript. Вредоносный активный контент может украсть учетные данные пользователя, получить конфиденциальные данные о пользователе или попытаться установить вредоносное ПО в систему пользователя (например, используя уязвимости в браузере или его подключаемых модулях).

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

Примеры активного содержимого

В этом разделе перечислены некоторые типы HTTP-запросов, которые считаются активным содержимым:

, cursor , background-image и так далее).
  • <объект> ( данные атрибут)
  • Navigator. sendBeacon ( атрибут url )
  • Другие типы ресурсов, такие как веб-шрифты и рабочие файлы, могут считаться активным смешанным содержимым, как и в Chrome.

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

    Загрузка локально доставляемых смешанных ресурсов

    Браузеры могут

    разрешать загрузку локально доставляемых смешанных ресурсов. Сюда входит файл : URL-адреса и содержимое, доступ к которому осуществляется с адресов обратной связи (например, http://127.0.0.1/).

    • Firefox 55 и более поздние версии разрешают загрузку смешанного содержимого на петлевой адрес http://127.0.0.1/ (см. ошибку Firefox 6),
    • Firefox 84 и более поздние версии позволяют загружать смешанный контент на http://localhost/ и http://*.localhost/ URL-адреса, так как теперь они сопоставлены с петлевыми адресами (см.
      ошибку Firefox 1220810).
    • Chrome также допускает смешанный контент на http://127.0.0.1/ и http://localhost/.
    • Safari не допускает смешанный контент.

    Обновление ресурсов со смешанным отображением

    Браузеры могут поддерживать автоматическое обновление запросов на отображение/медиаконтент с HTTP на HTTPS на защищенных страницах (это предотвращает условия смешанного содержимого, при которых одно содержимое загружается безопасно, а другое содержимое небезопасно).

    Firefox поддерживает эту функцию в качестве экспериментальной. Его можно включить с помощью настройки security.mixed_content.upgrade_display_content ).

    • Если обновление завершается сбоем (из-за того, что хост носителя не поддерживает HTTPS), носитель не загружается.
    • Предупреждения консоли сообщают об успешном обновлении содержимого.
    • Для получения дополнительной информации см. Экспериментальные функции в Firefox > Обновление содержимого смешанного отображения.

    Веб-консоль Firefox отображает предупреждающее сообщение о смешанном содержимом в панели «Сеть», когда на странице вашего веб-сайта возникает эта проблема. Ресурс со смешанным содержимым, который был загружен через HTTP, будет отображаться красным вместе с текстом «смешанный контент», который ссылается на эту страницу.

    Помимо обнаружения этих предупреждений в веб-консоли, для сообщения о проблемах можно использовать политику безопасности содержимого (CSP). Вы также можете использовать онлайн-сканер, такой как SSL-check или Missing Padlock, который будет рекурсивно проверять ваш сайт и находить ссылки на небезопасный контент.

    Начиная с Firefox 23, смешанный активный контент блокируется по умолчанию (и смешанный отображаемый контент можно заблокировать, установив предпочтение). Чтобы веб-разработчикам было проще находить ошибки смешанного содержимого, все заблокированные запросы смешанного содержимого регистрируются на панели «Безопасность» веб-консоли, как показано ниже:

    .

    Чтобы исправить ошибку этого типа, все запросы к содержимому HTTP должны быть удалены и заменены содержимым, обслуживаемым через HTTPS. Некоторые распространенные примеры смешанного содержимого включают файлы JavaScript, таблицы стилей, изображения, видео и другие медиафайлы.

    Примечание: Консоль отобразит сообщение об успешном обновлении содержимого смешанного отображения с HTTP на HTTPS (вместо предупреждения о «Загрузка содержимого смешанного (небезопасного) отображения»).

    • Смешанное содержимое — черновик редактора W3C
    • Как исправить сайт с заблокированным смешанным содержимым

    Обнаружили проблему с содержанием этой страницы?

    • Отредактируйте страницу на GitHub.
    • Сообщить о проблеме с содержимым.
    • Посмотреть исходный код на GitHub.

    Хотите принять участие?

    Узнайте, как внести свой вклад.

    Последний раз эта страница была изменена участниками MDN.

    Смешанное содержимое

    1. Введение

    Этот раздел не является нормативным.

    Когда пользователь успешно загружает веб-страницу с example.com через безопасный канал (например, HTTPS), пользователю гарантируется, что никакой объект между пользовательским агентом и example.com подслушивал или подделка данных, передаваемых между ними. Однако эта гарантия является ослаблен, если веб-страница загружает подресурсы, такие как скрипт или изображения, через небезопасное соединение. Например, небезопасно загруженный скрипт может позволить злоумышленник может прочитать или изменить данные от имени пользователя. Ненадежно загруженный изображение может позволить злоумышленнику сообщить пользователю неверную информацию (например, сфабрикованная биржевая диаграмма), изменить состояние на стороне клиента (например, установить cookie) или побудить пользователя совершить непреднамеренное действие (например, изменить надпись на кнопке).

    Эти запросы известны как смешанный контент.

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

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

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

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

    Таким образом, эта спецификация была обновлена, чтобы предоставить пользователям лучшие гарантии безопасности и конфиденциальности, а также лучший пользовательский интерфейс безопасности при минимизации поломка. Вместо того, чтобы рекомендовать браузерам просто строго блокировать весь смешанный контент, эта спецификация рекомендует автоматическое обновление смешанного контента :

    .
    • Смешанное содержимое, которое пользовательские агенты еще не блокируют, должно быть автоматически обновлено до безопасного транспорта.

    • Если запрос не может быть автоматически обновлен, он будет заблокирован.

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

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

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

    2. Ключевые понятия и терминология

    смешанное содержимое
    Запрос представляет собой смешанный контент , если его URL-адрес не является потенциально надежным URL-адресом [SECURE-CONTEXTS] и контекст, ответственный за его загрузка запрещает смешанные контексты безопасности (см. §4.3 Запрещают ли настройки смешанные контексты безопасности? нормативное определение последнего).

    Ответ представляет собой смешанный контент , если это неаутентифицированный ответ, и контекст ответственный за загрузку требует запрещает смешанные контексты безопасности.

    Внутри контекста, ограничивающего смешанное содержимое (например, https://secure.example.com/):

    1. Запрос скрипта http://example.com/script.js смешанный контент . Поскольку запросы сценариев можно заблокировать, пользовательский агент скорее вернет сетевую ошибку. чем загрузка ресурса.

    2. Запрос изображения http://example.com/image.png смешанный контент . Поскольку запросы изображений можно обновлять, пользовательский агент может переписать URL-адрес как https://example.com/image.png , иначе он будет заблокирован. Загрузка.

    Примечание. «Смешанное содержимое» изначально было определено в разделе 5.3 [WSC-UI]. Этот документ обновляет это первоначальное определение.

    Примечание. [XML] также определяет несвязанное «смешанное содержимое». концепция. Это потенциально сбивает с толку, но, учитывая, что термин почти повсеместное использование в контексте безопасности между пользовательскими агентами более чем десятилетие, практический риск путаницы кажется низким.

    ответ без аутентификации
    Мы знаем апостериори , что ответ ( ответ ) не прошел проверку подлинности, если URL-адрес ответа не является потенциально заслуживающим доверия URL-адресом.
    вложение документа
    Учитывая документ A , вложение документ из A — это документ-контейнер контекста просмотра A [HTML].
    смешанная загрузка
    Смешанная загрузка — это ресурс, который пользовательский агент обрабатывает как загрузку, который был инициирован безопасным контекстом, но загружается через небезопасное соединение.

    априорно аутентифицированный URL-адрес эквивалентен потенциально надежному URL-адресу [SECURE-CONTEXTS].

    3. Категории контента

    В идеальном мире каждый пользовательский агент должен блокировать все смешанные содержание без исключения. К сожалению, в сегодняшней ситуации это нецелесообразно. Интернет; пользовательский агент должен быть более тонким в своих ограничениях, чтобы избежать ухудшение опыта на значительном количестве веб-сайтов.

    Имея это в виду, мы разделили смешанный контент на две категории: §3. 1 Обновляемый контент и §3.2 Блокируемый контент.

    3.1. Обновляемый контент

    Обновляемый контент ранее назывался опционально блокируемым в более ранние версии этой спецификации.

    Смешанное содержимое может быть обновлено , когда риск его использования в качестве смешанного содержимого перевешивается риском нарушая значительные части сети. Это может быть связано с тем, что смешанное использование типа ресурса достаточно высока, а также потому, что ресурс сам по себе является малорисковым. Тот факт, что эти типы ресурсов могут быть обновлены, это не значит, что их сейф просто так они менее катастрофически опасны, чем другие типы ресурсов. Например, изображения и значки часто являются центральными элементами пользовательского интерфейса в интерфейсе приложения. Если злоумышленник изменил Значки «Удалить электронную почту» и «Ответить» окажут реальное влияние на пользователей.

    В эту категорию входят:

    • Запросы, инициатором которых является пустая строка, а адресатом является " image ".

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

    • Запросы, адресатом которых является « видео ».

      Примечание. Это соответствует видео, загруженному через video и source .

    • Запросы, пункт назначения которых " аудио ".

      Примечание. Это соответствует аудио, загруженному через audio и source .

    Мы дополнительно ограничиваем эту категорию в §4.4 Следует ли блокировать запрос на получение как смешанный контент? путем принудительного отказа любого CORS-поддерживаемого запрос. Это означает, например, что изображения со смешанным содержимым, загруженные через , будут заблокированы. Это хороший пример общего принципа, согласно которому содержание относится к этому категория только , когда он слишком широко используется, чтобы его можно было сразу заблокировать. Рабочая группа намеревается выделить больше блокируемых подмножеств с течением времени.

    3.2. Блокируемый контент

    Любой смешанный контент, который не может быть обновлен, как определено выше, считается блокируемым . Типичные примеры такого рода содержимое включает сценарии, данные плагинов, данные, запрошенные через XMLHttpRequest и так далее.

    Примечание. Запросы навигации могут быть нацелены на контексты просмотра верхнего уровня; это не считается смешанным содержанием. См. §4.4 Следует ли блокировать запрос на получение как смешанный контент? для деталей.

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

    4. Алгоритмы

    1" data-lt="Upgrade a mixed content request to a potentially trustworthy URL, if appropriate"> 4.1. Обновите смешанный контент запрос до потенциально надежного URL-адреса, если это уместно

    Примечание. Спецификация Fetch будет подключаться к этому алгоритму для обновления смешанный контент на HTTPS.

    Учитывая запрос Request request , этот алгоритм будет переписан его URL-адрес, если запрос считается обновляемым смешанным контентом, по следующему алгоритму:

    1. Если выполняется одно или несколько из следующих условий, возврат без изменения запрос :
      1. URL-адрес запроса является потенциально надежным URL-адресом.
      2. запрос URL-адрес узла является IP-адресом.
      3. §4.3 Запрещают ли настройки смешанные контексты безопасности? возвращает " Не ограничивает смешанную безопасность Содержимое " при применении к запросу клиента.
      4. запрос пункт назначения не " изображение ", аудио ", или " видео ".
      5. запрос пункт назначения " изображение " а инициатором запроса является « imageset ».

        Примечание. По историческим причинам « imageset » не обновляется. До некоторых типы обновляемого смешанного контента, спецификация разделила смешанный контент на блокируемый и необязательно блокируемый, причем блокируемый предпочтительнее для любого типа смешанного контента это не было распространено. imageset » был частью прежнего, и когда были добавлены обновления, было решено не обновлять какой-либо контент, который был ранее определяется как блокируемый.

    2. Если запрашивает , схема URL-адреса http , установите схему URL-адреса запроса на https и вернитесь.

      Примечание. Для [url] мы не изменяем порт, поскольку он будет установлен в значение null, когда схема http и интерпретируется как 443 после изменения схемы на https

    4.2. Модификации предыдущих алгоритмов

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

    4.3. Есть ли настройки

    запретить смешанные контексты безопасности?

    И документы, и работники имеют объекты параметров среды, которые можно исследовать по следующему алгоритму, чтобы определить ограничивают ли они смешанный контент. Этот алгоритм возвращает « Запрещает смешанные контексты безопасности » или « Не запрещает смешанные контексты безопасности », по мере необходимости.

    Учитывая объект настроек среды ( настройки ):

    1. Если настройки ’ источник является потенциально надежным источником, то возврат « запрещает смешанные контексты безопасности ».

    2. Если настройки ’ глобальный объект окно , то:

      1. Установить документ на настройки ’ документ, связанный с глобальным объектом.

      2. Для каждого судоходного судоходного в документ предок navigables:

        1. Если навигационный источник активного документа является потенциально надежным источником, затем верните « Запрещает смешанные контексты безопасности ».

    3. Вернуть « Не ограничивает смешанные контексты безопасности ».

    Если документ имеет встроенный документ, пользовательский агент должен проверить не только сам документ, но и просмотр верхнего уровня контекст, в который вложен документ, так как это контекст который контролирует ожидания пользователя относительно состояния безопасности ресурс, который она загружает. Например:

    http://a.com загружает http://evil.com . небезопасный запрос будет разрешен, так как a.com не был загружен по защищенному соединению.

    https://a.com загружает http://evil.com . небезопасный запрос будет заблокирован, так как a.com был загружен через безопасное соединение.

    http://a.com кадры https://b.com , которые загружает http://evil. com . В этом случае небезопасный запрос на evil.com будет заблокирован, так как b.com был грузится по защищенному соединению, хотя a.com не было.

    https://a.com фреймы data: URL, который загружает http://evil.com . В этом случае небезопасный запрос на evil.com будет заблокирован, так как a.com был загружен по защищенному соединению, даже несмотря на то, что в кадре данных: URL-адрес не будет блокировать смешанный контент, если он загружен в контексте верхнего уровня.

    4.4. Должен ли запрос

    на получение блокироваться как смешанный контент?

    Примечание. Спецификация Fetch подключается к этому алгоритму, чтобы определить, запрос должен быть полностью заблокирован (например, потому что запрос относится к блокируемому контенту, и мы можем предположить, что он не будет загружается через защищенное соединение).

    Учитывая запрос запрос , пользовательский агент определяет должен ли запрос запрос выполняться или нет через следующий алгоритм:

    1. Вернуть разрешено , если одно или несколько из следующих выполняются условия:
      1. §4.3 Запрещают ли настройки смешанные контексты безопасности? возвращает « Не ограничивает смешанные контексты безопасности » при применении к клиенту запроса .
      2. URL-адрес запроса является потенциально надежным URL-адресом.
      3. Пользовательский агент получил указание разрешить смешанный контент, т.к. описано в §7.2 Пользовательские элементы управления).
      4. запрос пункт назначения « документ » и запрос целевой просмотр context не имеет родительского контекста просмотра.

        Примечание. Мы исключаем переходы верхнего уровня из проверки смешанного содержимого, но пользовательские агенты МОГУТ выбрать принудительную проверку смешанного содержимого на небезопасная отправка формы (см. §7.1 Отправка формы).

    2. Возврат заблокирован .

    4.5. Следует ли блокировать ответ

    на запрос как смешанный содержание?

    Примечание. Если запрос продолжается, мы по-прежнему может захотеть заблокировать ответ в зависимости от состояния соединения который сгенерировал ответ (например, потому что запрос может быть заблокирован, но соединение не аутентифицировано), и нам также необходимо обеспечить что Service Worker случайно не вернет неаутентифицированный ответ на блокируемый запрос. Этот алгоритм используется для создания эта решимость.

    Учитывая запрос запрос и ответ ответ , пользовательский агент определяет, какой ответ должен быть возвращается по следующему алгоритму:

    1. Вернуть разрешено , если одно или несколько из следующих выполняются условия:
      1. §4.3 Запрещают ли настройки смешанные контексты безопасности? возвращает Не ограничивает Смешанное содержимое при применении к клиенту запроса .
      2. URL-адрес ответа является потенциально надежным URL-адресом.
      3. Пользовательский агент получил указание разрешить смешанный контент, т.к. описано в §7.2 Пользовательские элементы управления).
      4. запрос пункт назначения « документ » и запрос целевой просмотр context не имеет родительского контекста просмотра.

        Примечание. Мы исключаем переходы верхнего уровня из проверки смешанного содержимого, но пользовательские агенты МОГУТ выбрать принудительную проверку смешанного содержимого на небезопасная отправка формы (см. §7.1 Отправка формы).

    2. Возврат заблокирован .

    5. Интеграция

    5.1. Модификации Fetch

    Fetch §4.1 Основная выборка должна быть изменена для вызова §4.1 Обновите запрос смешанного содержимого до потенциально надежного URL-адреса, если это уместно, в запросе между шагами 3 и 4. То есть обновляемый смешанный контент должен автоматически обновляться до HTTPS перед применением блокировки смешанного контента.

    5.2. Изменения в HTML

    Обработка ответа навигации должна быть изменена следующим образом. Шаг 3 должен прервать загрузку и вернуть, если URL-адрес активного документа источника является потенциально заслуживающим доверия URL-адресом и любым URL-адресом в ответе список URL-адресов не является потенциально заслуживающим доверия URL-адресом.

    Аналогичное изменение необходимо внести для загрузки гиперссылки. В этом алгоритме шаг 6.2 следует изменить, чтобы вернуть (прервать загрузку), если узел субъекта URL-адрес документа является потенциально надежным URL-адресом и любой URL в 9Список URL-адресов ответа 0300 не является потенциально надежным URL-адресом (где ответ является результатом получение запроса ).

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

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

    6. Устаревание

    6.1.

    Строгая проверка смешанного содержимого

    Более ранняя версия этой спецификации определяла директиву CSP block-all-mixed-content . Сейчас это устарело, потому что весь смешанный контент теперь блокируется, если его нельзя обновить автоматически.

    Примечание. Директива upgrade-insecure-requests ([upgrade-insecure-requests]) не устарело, поскольку позволяет разработчикам обновлять блокируемый контент. Только эта спецификация обновляет обновляемый контент по умолчанию.

    7. Вопросы безопасности и конфиденциальности

    В целом ожидается, что автоматическое обновление обновляемого смешанного содержимого будет обеспечивать безопасность и безопасность. конфиденциальность, защищая больше пользовательского трафика от сетевого прослушивания и несанкционированного доступа.

    Существует риск возникновения проблемы безопасности или конфиденциальности на веб-странице при загрузке ресурса, который разработчик не собирался. Например, предположим, что на веб-сайте размещено безобидное изображение. из http://www.example.com/image.jpg , а для некоторых причина https://www.example.com/image.jpg перенаправляет на сайт отслеживания. Браузер теперь будет введена проблема конфиденциальности без явного разрешения разработчика или пользователя согласие. Однако ожидается, что такие случаи будут чрезвычайно редкими. Риск снижается за счет автоматическое обновление только обновляемого контента, а не блокируемого контента. Блокируемый контент может представлять больший риск, например, риск загрузки устаревшего и уязвимого кода JavaScript. библиотека.

    7.1. Отправка формы

    Если §4.3 Запрещают ли настройки смешанные контексты безопасности? возвращает Restricts Mixed Content при применении к соответствующему объекту настроек Document , тогда пользовательский агент МОЖЕТ выбрать предупреждение пользователей о наличие одного или нескольких элементов формы с атрибутами действия, чьи значения не являются потенциально надежными URL-адресами.

    Пользовательский агент МОЖЕТ выбрать предупреждение пользователей при отправке формы 9Элемент 0023 с атрибутами действия, значения которых не являются потенциально надежными URL-адресами. и разрешить пользователям прерывать отправку. Если пользовательский агент предупреждает об элементе формы отправки на потенциально ненадежные URL-адреса, он ДОЛЖЕН также предупреждать и разрешать пользователям прервать отправку, если при отправке действие элемента формы формы перенаправляется на потенциально ненадежный URL-адрес, раскрывающий информацию формы .

    Кроме того, пользовательский агент МОЖЕТ обрабатывать отправку формы из такого Документ как блокируемый запрос, даже если отправка происходит в контексте просмотра верхнего уровня.

    7.2. Пользовательские элементы управления

    Пользовательский агент МОЖЕТ предлагать пользователям возможность отменить свое решение о блокировании блокируемого смешанного контента на определенной странице.

    Примечание. На практике пользовательский агент, вероятно, не может обойтись без предложения такая задняя дверь. Тем не менее, разрешение смешанных сценариев, в частности, очень опасная опция, и каждый пользовательский агент ДЕЙСТВИТЕЛЬНО НЕ ДОЛЖЕН [RFC6919] предоставляют такой выбор пользователям без тщательного рассмотрения и информирование о связанном с этим риске.

    Пользовательский агент МОЖЕТ предлагать пользователям возможность отменить свое решение автоматически обновлять обновляемый смешанный контент на конкретная страница.

    Любые такие элементы управления, предлагаемые пользовательским агентом, ДОЛЖНЫ также предлагаться через API доступности для пользователей вспомогательных технологий.

    8. Благодарности

    В дополнение к замечательным отзывам, полученным от рабочей группы WebAppSec, Команда безопасности Chrome оказала неоценимую помощь при подготовке этой спецификации.