什麼是混合內容?

混合內容是指透過安全的 HTTPS 連線載入初始 HTML 的情況,但其他資源 (例如圖片、影片、樣式表、指令碼) 則是透過不安全的 HTTP 連線載入。之所以稱為複合內容,是因為同時載入 HTTP 和 HTTPS 內容來顯示相同的網頁,而初始要求是透過 HTTPS 安全發出。

如果使用不安全的 HTTP 通訊協定要求子資源,整個頁面的安全性會降低,因為這類要求較容易遭受「路徑上攻擊」,攻擊者會在網路連線和檢視畫面上竊聽,或是修改雙方之間的通訊。只要利用這些資源,攻擊者就能追蹤使用者並替換網站上的內容。如果混合使用活躍的複合型內容,攻擊者將能完全掌控網頁,而不只是不安全的資源。

雖然許多瀏覽器會向使用者回報混合型內容警告,但這次卻是遲早:已執行不安全的要求,且網頁的安全性已遭破壞。

因此瀏覽器越來越常封鎖複合型內容。如果您的網站上有混合內容,請進行修正,以確保瀏覽器越嚴格,內容還能繼續載入。

複合型內容的兩種類型

複合型內容分為兩種類型:主動式和被動內容。

被動複合型內容是指不會與網頁其他部分互動的內容,因此攔截式攻擊會限制使用者攔截或變更該項內容的動作。被動複合型內容是指圖片、影片和音訊內容。

主動式複合型內容會與網頁整體互動,可讓攻擊者對網頁執行任何動作。 主動式複合型內容包括指令碼、樣式表、iframe 以及其他瀏覽器可下載和執行的程式碼。

被動複合型內容

被動式複合型內容較不構成問題,但仍然會對您的網站和使用者造成安全威脅。 舉例來說,攻擊者可能會攔截網站上圖片的 HTTP 請求,並更換或取代這些圖片;攻擊者可以替換「儲存」和「刪除」按鈕圖片,造成使用者不打算刪除內容;將產品圖表替換成猥褻或色情內容、呈現您的網站,或是換上其他網站或產品的廣告,更換產品圖片。

即使攻擊者沒有修改網站內容,攻擊者仍可透過混合內容要求來追蹤使用者。攻擊者可根據瀏覽器載入的圖片或其他資源,分辨使用者造訪哪些網頁,以及瀏覽的產品。

如果大多數瀏覽器出現被動式複合型內容,即使網頁本身是透過 HTTPS 載入,網址列中仍會顯示該網頁並不安全。 您可以透過這個示範內容觀察這項行為,其中包含被動複合型內容的範例。

直到最近在所有瀏覽器載入被動式複合型內容之前,若要封鎖該內容,許多網站仍然會損毀。我們已開始調整現況,因此請務必更新網站上所有包含複合型內容的情況。

Chrome 目前正在推出:盡可能自動升級被動複合型內容。自動升級是指,如果素材資源可透過 HTTPS 使用,但卻以 HTTP 硬式編碼形式,瀏覽器會載入 HTTPS 版本。如果找不到安全版本,系統就不會載入素材資源。

只要偵測到複合型內容或自動升級被動複合型內容,Chrome 就會記錄開發人員工具中的「問題」分頁,引導您修正特定問題。

Chrome 開發人員工具的「問題」分頁會顯示特定複合型內容問題的詳細資訊和修正方式

使用中的複合型內容

相較於被動複合型內容,活躍的複合型內容有著更大的威脅。攻擊者可能會攔截及改寫主動中的內容,進而全面掌控您的網頁,甚至整個網站。這可讓攻擊者變更頁面內容,包括顯示完全不同的內容、竊取使用者密碼或其他登入憑證、竊取使用者工作階段 Cookie,或是將使用者完全重新導向至其他網站。

由於這種威脅的嚴重程度,大多數瀏覽器都已預設封鎖這類內容,以保護使用者,但功能會因瀏覽器供應商和版本而異。

這個其他示範則包含有效複合型內容的範例。透過 HTTP 載入範例,查看透過 HTTPS 載入範例時遭到封鎖的內容。封鎖的內容也會在「問題」分頁中提供。

Chrome 開發人員工具的「問題」分頁會顯示特定複合型內容問題的詳細資訊和修正方式

複合型內容規格

瀏覽器會遵循複合型內容規格,定義了選擇性可封鎖的內容可封鎖的內容類別。

根據規格,當「允許取用混合內容的風險大於網路中大量內容的風險,資源使用時可能會遭封鎖」;這類資源屬於選擇性可封鎖的內容;屬於上述被動複合型內容類別的其中一部分。

所有非選擇性封鎖的內容都會視為「可封鎖」,因此必須遭到瀏覽器封鎖。

近年來,HTTPS 使用量大幅增加,並成為網路上相當明確的預設設定。如此一來,瀏覽器現在就能夠考慮封鎖所有複合型內容,包括在混合內容規格中定義的子資源類型 (可選擇性封鎖)。因此,現在 Chrome 會對這些子資源採取更嚴格的做法。

舊版瀏覽器

請特別注意,並非所有網站訪客都使用最新版本的瀏覽器。 各個瀏覽器廠商的版本不同,各自處理複合型內容的方式也不同。 更糟的是,舊版瀏覽器和版本完全不會封鎖任何複合型內容,對使用者來說非常不安全。

只要修正複合型內容問題,就能確保您的內容顯示在新版瀏覽器中。此外,這麼做也能保護使用者,防範舊版瀏覽器未封鎖的危險內容。