標籤:
(摘自http://blog.aizhet.com/Windows/18415.html)
從 Firefox 18 開始,如果 HTTPS 頁面中包含非加密的 HTTP 內容,瀏覽器會在控制台輸出警告,記錄 Mixed Active Content 請求。而從 Firefox 23 開始,瀏覽器會預設阻止 HTTPS 頁面中可能影響網頁安全的 HTTP 要求(即阻止 Mixed Active Content)。這樣做會犧牲一些網站的相容性,但對安全性的提高是很有協助的。
擷取 Mixed Content 相當於發起部分加密的串連,其中未加密的部分存在被中間人攻擊的可能。不同類型的 Mixed Content 所產生的危害程度也有所不同,Mixed Passive Content 可能會使中間人擷取到使用者的裝置資訊,或讓使用者看到不正確的圖片、音頻等資訊。而 Mixed Active Content 則可能導致使用者的敏感性資料被竊取,比如帳號密碼等。
解決問題
解決方案一 (一勞永逸)
避免在 HTTPS 頁面中包含 HTTP 的內容。
解決方案二 (讓 Firefox 暫時不阻止)
解決方案三 (配置本地 Firefox,讓其不再阻止)
開啟新標籤頁,在地址欄輸入 about:config,進入配置頁面。
為什麼 Mixed Content Blocker 不是阻止所有的 HTTP 要求?
Mixed Content 可以分為兩類:
- Mixed Passive Content
- Mixed Active Content
Mixed Passive Content (a.k.a. Mixed Display Content)
Mixed Passive Content 是在 HTTPS 頁面中一些對安全性影響不大的 HTTP 內容,比如 Image、Audio、Video 等。即使這些內容被中間人篡改,所產生的影響也只是 —— 中間人得知了使用者的瀏覽器資訊 (through user-agent included by HTTP headers)、使用者看到了一張不正確的圖片,這些被篡改的內容無法修改 DOM 樹,也無法執行。另外,Mixed Passive Content 在 Web 上普遍存在。因此 Firefox 預設不會阻止 Mixed Passive Content。
Mixed Active Content (a.k.a. Mixed Script Content)
Mixed Active Content 是在 HTTPS 頁面中一些能夠修改 DOM 樹的 HTTP 內容,如 JavaScript、CSS、XMLHttpRequest、iFrame 等。這些 HTTP 內容被中間人修改以後,可能會影響原有 HTTPS 內容的安全性,導致敏感的使用者資料被盜。因此 Firefox 會預設阻止 Mixed Active Content。
深入思考
為什麼 Frame 應該是 Mixed Active Content?
Frame 之所以不能被分類為 Mixed Passive Content 主要有以下幾個原因: 一個 frame 可以將外層可靠的 HTTPS 頁面跳轉到惡意盜取資訊的仿造頁面。 如果一個 HTTPS 頁面嵌套著 HTTP frame,而這個 frame 包含表單用以輸入使用者資訊,那麼使用者資訊將會以 HTTP 方式傳送,有被中間攻擊者竊取的危險,而使用者卻毫不知情,還以為一切都在安全的 HTTPS 裡。
如何判定 Mixed Content 是 Active 還是 Passive?
該 Mixed Content 是否會影響頁面的 DOM 結構。(Yes -> Active, No -> Passive)
(技術分享) 解決 Firefox 顯示“封鎖載入混合主動式內容”的問題