如果網頁的初始 HTML 是透過安全的 HTTPS 連線載入,但其他資源 (例如圖片、影片、樣式表和指令碼) 是透過不安全的 HTTP 連線載入,則該網頁就含有複合型內容。這個名稱是指單一頁面上混合使用 HTTP 和 HTTPS 內容。
使用不安全的 HTTP 通訊協定要求子資源會削弱網頁的安全性,因為這些要求容易遭到路徑攻擊,攻擊者會竊聽網路連線,並查看或修改雙方之間的通訊內容。駭客可利用這些資源追蹤使用者,並取代網站上的內容。如果是混合內容,駭客不僅能掌控不安全的資源,還能完全掌控網頁。
雖然許多瀏覽器會向使用者回報混合內容警告,但這類警告通常會在安全性不佳的要求已執行後才顯示,因此網頁的安全性會受到影響。
大多數瀏覽器現在會基於安全性考量而封鎖混合內容。將不安全的內容要求變更為安全內容,確保網頁持續正確載入。
兩種複合型內容
混合內容分為兩種:主動和被動。
被動式複合型內容 (包括圖片、影片和音訊) 不會與網頁的其他部分互動,因此如果中間人攻擊攔截或變更這類內容,其功能會受到限制。
有效複合型內容會與整個網頁互動。這包括瀏覽器可下載及執行的所有程式碼,包括指令碼、樣式表、iframe 和其他程式碼。攻擊者可透過攻擊有效的混合型內容,對網頁執行幾乎任何操作。
被動複合型內容
相較於有效複合型內容,被動複合型內容的風險較低,但仍存在風險。舉例來說,攻擊者可以:
- 攔截網站上圖片的 HTTP 要求,並換用或取代這些圖片。
- 替換按鈕上的圖片,以免使用者混淆,例如誤刪原本想儲存的內容。
- 將圖片替換成色情內容,破壞網站。
- 將產品圖片換成其他廣告。
即使攻擊者未變更網站內容,仍可透過混合內容要求追蹤使用者。他們也可以根據瀏覽器載入的圖片或其他資源,判斷使用者造訪哪些網頁,以及查看哪些產品。
如果網頁含有被動混合內容,大多數瀏覽器都會在網址列中顯示該網頁不安全,即使網頁本身是透過 HTTPS 載入也一樣。您可以在這個示範中觀察這項行為。
在最近之前,所有瀏覽器都會載入被動混合內容,因為封鎖這類內容會導致許多網站無法正常運作。但現在情況開始改變,因此請務必更新網站上的任何混合內容例項。
在某些情況下,Chrome 會自動升級被動式複合型內容。也就是說,如果素材資源已硬式編碼為 HTTP,但可透過 HTTPS 使用,瀏覽器就會載入 HTTPS 版本。如果沒有安全版本,素材資源就不會載入。
每當 Chrome 偵測到複合型內容或自動升級被動式複合型內容時,就會將詳細訊息記錄到開發人員工具的「Issues」分頁中,以便您修正特定問題。

有效複合型內容
主動混合型內容比被動混合型內容更具威脅性。攻擊者可以攔截及重寫活動內容,藉此完全掌控您的網頁,甚至是整個網站。這可讓他們變更網頁的任何層面,包括顯示不同的內容、竊取使用者密碼或其他登入憑證、竊取使用者工作階段 Cookie,或是將使用者重新導向至其他網站。
由於有效複合型內容的風險極高,因此大多數瀏覽器都會預設封鎖這類內容,以保護使用者,但不同瀏覽器供應商和版本的行為可能有所不同。
這個示範會顯示主動混合內容的範例。透過 HTTP 載入範例,即可查看透過 HTTPS 載入範例時遭到封鎖的內容。開發人員工具的「Issues」分頁也會詳細列出遭封鎖的內容。

複合型內容規格
瀏覽器會遵循混合內容規格,其中定義了可選封鎖的內容和可封鎖的內容類別。
當允許資源做為複合型內容使用的風險,大於破壞網路重要部分的風險時,該資源就符合可選擇封鎖的內容資格。這是被動式複合型內容的子集。
所有混合內容如果不是可選封鎖,則視為可封鎖,且應由瀏覽器封鎖。
近年來,HTTPS 使用率大幅提升,已成為網路上的預設通訊協定。因此,現在瀏覽器更有可能考慮封鎖所有混合內容,甚至是混合內容規格中定義為可選封鎖的子資源類型。
舊版瀏覽器
部分訪客可能會使用舊版瀏覽器。不同供應商提供的不同瀏覽器版本,會以不同的方式處理混合內容。最糟的情況是,舊版瀏覽器和版本根本不會封鎖任何混合內容,這對使用者來說並不安全。
透過安全地載入所有資源並修正混合內容問題,您就能確保內容可供瀏覽,並保護使用者免於接觸舊版瀏覽器可能不會封鎖的危險內容。