什麼是混合內容?

當受 TLS 保護的網站包含透過不安全 HTTP 通訊協定載入的元素時,就會出現混合內容。這會帶來可被攻擊者利用的漏洞。

學習目標

閱讀本文後,您將能夠:

  • 描述產生混合內容的條件
  • 區分被動和主動混合內容
  • 瞭解如何防止混合內容

相關內容


想要繼續瞭解嗎?

訂閱 TheNET,這是 Cloudflare 每月對網際網路上最流行見解的總結!

請參閱 Cloudflare 的隱私權政策,了解我們如何收集和處理您的個人資料。

複製文章連結

什麼是混合內容?

使用 TLS(也稱為 SSL),可以對網際網路通訊進行加密,打造更加安全的瀏覽體驗。使用者可以輕鬆識別 TLS 加密的網站,因為其 URL 中含有「https://」而非「http://」。但在某些情況下,HTTPS 網站也可能包含一些使用純文字 HTTP 通訊協定載入的元素。這將形成一個稱為混合內容的情形,有時也稱為「HTTP over HTTPS」。

瀏覽器中的混合內容

存在混合內容時,使用者會感覺他們使用的是安全的加密連線,因為是喲用這處在受 HTTPS 保護的網站上。然而,頁面中的未加密元素會帶來漏洞,使這些使用者暴露在惡意活動中,例如未經授權的追蹤和中間人攻擊等。漏洞的嚴重性取決於混合內容是被動還是主動的。

被動/顯示混合內容和主動混合內容有什麼區別?

被動/顯示混合內容:在這種情況下,未加密的 HTTP 內容僅限於網站上封裝的並且無法與頁面其餘部分互動的元素,如影像或影片。例如,攻擊者可以封鎖或替換透過 HTTP 載入的影像,但無法修改頁面的其餘部分。

主動混合內容:在這種情況下,透過 HTTP 提供的元素或相依性能夠與整個網頁互動並對網頁進行更改。這包括 JavaScript 檔案和 API 要求之類的相依性。

與被動/顯示混合內容相比,主動混合內容面臨更為嚴重的威脅;在遭入侵之後,它允許攻擊者控制整個網頁、收集敏感的使用者輸入(如登入認證)、為使用者提供偽造的頁面,或將使用者重新導向到攻擊者的網站。

大多數現代 Web 瀏覽器都在開發人員主控台中提供針對混合內容的警告,並且封鎖危險程度較高的混合內容類型。各種瀏覽器都有自己的一套規則,但一般而言,主動混合內容更可能被封鎖。

儘管被動/顯示混合內容構成的威脅比較輕微,但仍為攻擊者提供了破壞隱私並追蹤使用者活動的機會。此外,許多瀏覽器都允許某些形式的被動混合內容,並且僅在開發人員主控台中向使用者提供混合內容警告,因此許多使用者不會意識到自己正在接觸混合內容。

Chrome 中的混合內容錯誤

使用過時 Web 瀏覽器的使用者特別容易受到攻擊,因為這些瀏覽器或許根本不會封鎖混合內容。

為什麼瀏覽器不封鎖所有混合內容?

遺憾的是,大量流行網站都以某種方式提供混合內容。如果 Web 瀏覽器封鎖所有混合內容,它提供給使用者的 Web 內容將非常局限。在更多網站解決此問題之前,瀏覽器必須做出妥協,允許某些不太嚴重的混合內容形式。

如何修正混合內容錯誤?

Web 開發人員有責任消除混合內容。隨著時間的推移,Web 瀏覽器對混合內容的限制越來越嚴格,並且這種趨勢只會繼續。因此,如果開發人員希望 Web 瀏覽器繼續顯示其網站,則必須消除混合內容。

混合內容的修正非常簡單:Web 開發人員需要確保其頁面上的每個資源都透過 HTTPS 載入。在實踐中,這可能會頗為棘手,因為現代網站通常從不同的來源載入幾種不同的資源。

有一個不錯的工具可以協助開發人員甄別其頁面中存在的所有混合內容,那就是 Google Chrome 開發人員主控台。開發人員還可以檢查其原始程式碼,以查找使用「http://」URL 載入的資源,如 API 呼叫和庫。在某些情況下,解決方案只是簡單地將「http://」URL 替換為「https://」。但是,必須首先驗證資源的 HTTPS 版本是否可用。如果資源的加密版本不可用,則需要徹底替換或移除這個資源。