2012-07-14 49 views
2

我剛剛將我的網站從http移動到https,並且IE-9開始在home page處顯示不安全的內容警告。這個警告是可以理解的,因爲我有一個http調用來獲取jquery腳本的googleapi。但是,當我登錄並進入內部頁面時,儘管大部分圖像都是通過http協議從其他服務器傳出,但IE並沒有發出警告。 所以問題:通過https訪問站點時,通過http獲取映像是否正常?只有css和js很重要嗎?還是必須通過HTTPS獲取所有數據?如果是的話,我的方案如何合理(通過http頁面上的其他服務器獲取圖像而不發出警告)?混合內容警告IE:重要的是; CSS,圖像,一切?

+0

谷歌的jQuery通過https現在提供:https://developers.google.com/speed/libraries/devguide – Thomas 2012-07-14 08:56:34

+0

都在http和https – 2012-07-14 09:17:17

回答

3

如果您通過HTTP加載CSS和JS,則攻擊者可以注入可執行代碼。不幸的是IE會在CSS內執行JavaScript。從同一個域通過HTTP加載圖像的問題是,瀏覽器可能會以純文本溢出會話標識符,這是違規行爲OWASP a9

2

您可以在所有的url上使用protocol-relative URL以避免IE中出現此問題。基本上,而不是鏈接到一個js/image/css通過使用它的完整路徑與協議,而是通過忽略協議位並僅使用雙斜槓鏈接到它//。

這將產生所有上述從父頁面繼承協議的鏈接的效果。

當然,這取決於您在提供不同文件格式的域上擁有有效的SSL證書。

還有一點需要注意的是,使用數據URI完成的頁面或CSS中的圖像也可能導致IE中出現混合內容警告。

要找出哪些文件是造成問題,我建議使用Fiddler

也有另一種工具,一個老鄉SO用戶,埃裏克·法寫道:

http://www.bayden.com/dl/scriptfreesetup.exe安裝它,你將得到不同混合內容提示,它顯示頁面上第一個不安全資源的確切URL。該工具基本上是一個原型,您應該在完成後卸載它。它適用於IE8,你應該以管理員身份安裝它。

+0

謝謝Moin,相對URL確實解決了這個問題,但我有我得到的場景來自其他服務器的圖像,如「https:// 212.75.234.21/path/image.jpg」。現在我們沒有其他服務器的域名,我們無法獲得針對IP的SSL證書(就我所知)。所以當我顯示這些圖片時,我必須使用絕對網址。同樣,我正在使用cdn中的腳本文件,該文件必須使用絕對url進行引用。但問題是腳本觸發混合內容警告,但圖像不會產生任何此類警告。 – 2012-07-16 05:39:07