2009-02-25 46 views
8

我們正在考慮啓用SSL網站的一部分,但某些網頁包含第三方供應商的廣告(如Google AdSense)。如何避免瀏覽器中的「此頁面包含安全和非安全項目」警告?

我認爲這會給我們的用戶帶來惱人的問題,因爲他們在看到帶有廣告的頁面時會看到類似「此頁面包含安全和非安全項目」的警告消息。但是,當我使用https而不是http瀏覽Gmail時,我在Firefox中看不到該警告。

有人知道Gmail如何隱藏它嗎?

回答

15

谷歌的文檔表明這是一個已知的問題,並沒有提供一種解決方法:https://www.google.com/adsense/support/bin/answer.py?answer=10528

+0

如果谷歌不支持它,我怎麼看廣告從谷歌時,我通過https登錄到Gmail? – Herman 2009-02-25 23:16:45

+0

Google將廣告直接嵌入頁面中,並且不使用任何機制將它們包含在外部。 – Rob 2009-02-25 23:57:05

19

一些網頁包含來自第三方供應商(如谷歌的AdSense)

然後,瀏覽器是正確的廣告 - 這不安全。

通過AdSense和大多數其他廣告網絡,您可以獲得指向JavaScript的鏈接。當您參考任何外部<腳本時,您完全信任頁面內容到外部腳本提供程序。你需要信任他們只做他們打算做的事(展示廣告),而不是像從其所在的頁面接管登錄表單那樣的惡意行爲,並竊取你鍵入的值,或者,如果「廣告」腳本包含在您的銀行賬戶頁面上,自動清空所有的錢。

因此,外部腳本是一個信任問題,但如果您使用的是向其廣告提供HTTPS接口的供應商,那麼至少它只是您必須信任的一個知名方。如果廣告提供商只有一個HTTP接口,那麼您就會向任何可以通過中間人攻擊或類似攻擊獲取控制權的人發送您的信任。您正在有效地將整個頁面的信任級別降低到原始未加密的HTTP級別,因此瀏覽器非常正確地指出該頁面實際上並不比任何舊的HTTP站點更安全。

3

由於這是分析的答案,你可以用它來對您的安全網頁

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閱讀您的安全網頁內容並反過來展示廣告。 (這是一個警察爲谷歌提供藉口,但如前所述,他們只是不支持它)

要回答你的GMail問題...(在這裏使用螢火蟲,所以我可以解釋這個錯誤)

  1. 我用始終安全的連接登錄到gmail。無廣告。
  2. 我打開控制檯,查看gmail所做的連接。
  3. 我清除控制檯
  4. 我點擊了一條廣告顯示在右側的消息。

Gmail只撥打了兩個電話。首先得到https://mail.google.com,我猜是我的電子郵件。第二個是POST到https://mail.google.com/mail/channel/

我在猜測(其他人都糾正我)Gmail要求提供廣告的代理髮布帖子。

GMail將內容發送給代理,代理獲取廣告,代理將內容發送回Gmail。所有的祕密。

總想有

感謝downvote,但沒有什麼是無益

2

解釋「有誰知道怎麼的Gmail隱藏呢?」

簡答:他們使用https來獲取廣告。通過Firebug的網絡標籤查看GMail的網頁加載情況,我看到網頁中的廣告位於請求中,網址爲https://mail.google.com/mail/?ui=2&ik=bbff8a9f5c&view=ad&ak=is00jux7yq7kgk730lqdkxklz03d9d8,所以看起來他們確實有辦法通過https 投放廣告,但僅限於他們自己的網站

4

如果您嘗試包含非安全內容並控制顯示內容,則可以編寫一個處理程序,將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檢索和轉發頁面內容,從而消除安全/不安全警告。

0

將所有我的http://改爲https://(或相對)後,我仍然遇到這個問題,最後我意識到這是由於緩存。我刷新了我的瀏覽器緩存,並沒有問題。此外,它似乎像你的鏈接(一個HREF =什麼)可以是http,這可能是顯而易見的,但我最初並不確定)

相關問題