Как избежать появления в моем браузере предупреждения «Эта страница содержит как безопасные, так и незащищенные элементы»?

Мы думаем об использовании части нашего веб-сайта с поддержкой SSL, но на некоторых страницах есть реклама сторонних поставщиков (например, Google AdSense).

Я думаю, что это создаст неприятную проблему для наших пользователей, поскольку они будут видеть предупреждающее сообщение типа «Эта страница содержит как безопасные, так и незащищенные элементы» при просмотре страницы с рекламой. Однако, когда я перехожу в Gmail с https вместо http, я не вижу этого предупреждения в firefox.

Кто-нибудь знает, как Gmail это скрывает?

Ответов (6)

В документации Google указано, что это известная проблема, и не предлагается решение: https://www.google.com/adsense/support/bin/answer.py?answer=10528.

некоторая страница содержит рекламу от стороннего поставщика (например, Google AdSense)

Тогда браузер прав - это небезопасно.

В AdSense и большинстве других рекламных сетей вам предоставляется ссылка на JavaScript. Когда вы ссылаетесь на любой внешний <script>, вы полностью доверяете содержимое своей страницы внешнему провайдеру скриптов. Вы должны доверять им делать только то, что они обещают сделать (показывать рекламу), а не что-то гнусное, например, захватить форму входа со страницы, на которой она находится, и украсть значения, которые вы вводите в нее, или, если «Рекламный» скрипт был включен на страницу вашего банковского счета, автоматически опустошая все ваши деньги.

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

"Кто-нибудь знает, как Gmail это скрывает?"

Короткий ответ: они используют https для получения рекламы. Просматривая вкладку Net в Firebug для загрузки страницы GMail, я вижу объявления, которые находятся на странице в запросе с URL-адресом, https://mail.google.com/mail/?ui=2&ik=bbff8a9f5c&view=ad&ak=is00jux7yq7kgk730lqdkxklz03d9d8 поэтому похоже, что у них есть способ показывать рекламу через https, но только для своих собственных сайтов .

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

if ("http:" == document.location.protocol) { /*show your adds here*/ }

Я получил эту идею из того, как я делаю аналитику на своих сайтах

<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>

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

Чтобы ответить на ваш вопрос о GMail ... (здесь используется Firebug, поэтому я могу интерпретировать это неправильно)

  1. Я вхожу в Gmail с всегда безопасным соединением. Без рекламы.
  2. Я включаю консоль, чтобы посмотреть, какие соединения делает Gmail.
  3. Я очищаю консоль
  4. Я нажимаю на сообщение с рекламой справа.

Gmail сделал всего два звонка. Сначала перейдите на https://mail.google.com , я предполагаю, что это мой адрес электронной почты. Второй был POST на https://mail.google.com/mail/channel/.

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

GMail отправляет контент на прокси, прокси получает рекламу, прокси отправляет контент обратно в Gmail. Все надежно.

ВСЕГО УГАДАЙТЕ ТАМ

Спасибо за отрицательный голос, но без объяснения того, что не помогло

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

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

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

используя информацию здесь: http://www.csharp-station.com/HowTo/HttpWebFetch.aspx, вы можете легко адаптировать его для приема параметра (фактического URL-адреса, который вы хотите получить) ...

поэтому на отображаемой странице вы должны вызвать https://my.domain.com/pages/HttpWebFetch.aspx?url=http://ads.google.com/, HttpWebFetch.aspx затем будет извлекать и ретранслировать содержимое страницы через https тем самым удаляя безопасные / небезопасные предупреждения.

После изменения всего моего http: // на https: // (или относительного) у меня все еще была эта проблема, в конце концов я понял, что это из-за кеширования. Я обновил кеш браузера, и все прошло нормально. Кроме того, похоже, что ваши ссылки (href = something) могут быть http, это может быть очевидно для большинства, но сначала я не был уверен :)