草稿:
https://developer.mozilla.org/zh-TW/docs/Web/Security/Mixed_content
混合內容的類型
混合內容的類型有兩種:被動/顯示型混合內容(mixed passive/display content)與主動型混合內容(mixed active content)。兩者不同處在於內容遭中間人攻擊竄改後,其最壞情況下的威脅程度。如果是被動型混合內容,威脅程度較低(可能有錯誤內容、或者用戶的 cookie 遭到竊取)。如果是主動型混合內容,威脅就可能會變成網絡釣魚、敏感資料洩露、被重定向到惡意網站……等等。
被動/顯示型混合內容
被動/顯示型混合內容內容是指包在 HTTPS 頁面,但無法改變其他部分的 HTTP 內容。例如,攻擊者能把放在 HTTP 的圖像,換成對用戶而言不適當的圖片或訊息。攻擊者也能監看圖片提供給哪些用戶,來推斷用戶活動的相關資訊:圖片通常只能在網站內的特定頁面提供。如果攻擊者觀察了某些圖片的 HTTP 請求,他們還能確認用戶在訪問哪個網頁。
被動型混合內容清單
以下列出會被視為被動型混合內容的 HTTP 請求:
-
<img>
<small style="box-sizing: border-box;">(en-US)</small>(src
屬性) -
<audio>
<small style="box-sizing: border-box;">(en-US)</small>(src
屬性) -
<video>
<small style="box-sizing: border-box;">(en-US)</small>(src
屬性) -
<object>
<small style="box-sizing: border-box;">(en-US)</small> subresource(如果<object>
發起 HTTP 請求)
主動型混合內容
主動型混合內容是指有權訪問文件 HTTPS 頁面、物件模型的內容。這種混合內容可以改變 HTTPS 頁面行為、並暗自竊取用戶的敏感資訊。因此,主動型混合內容除了內容除了上文所述的風險外,還容易受到其他攻擊媒介的威脅。
針對主動型混合內容,中間人攻擊者可以攔截 HTTP 內容的請求、並竄改回應以植入惡意 JavaScript 程式碼。惡意的主動型混合內容能竊取用戶的憑證、用戶的敏感資料、甚至透過如瀏覽器或套件的漏洞,嘗試安裝惡意軟體。
混合內容涉及的風險,取決於用戶訪問的網站類型、還有該網站資訊的敏感程度。網頁可能有公諸於世的公開資料、也可能有僅限授權者閱覽的私人資料。即使網頁是公開的,也沒有用戶的敏感資料,混合內容依舊給攻擊者把用戶重定向到其他 HTTP 頁面、並從這些網站竊取 HTTP cookie 的機會。
主動型混合內容示例
以下列出會被視為主動型混合內容的 HTTP 請求:
-
<script>
(src
屬性) -
<link>
<small style="box-sizing: border-box;">(en-US)</small>(href
屬性)(包含 CSS 樣式表) -
<iframe>
<small style="box-sizing: border-box;">(en-US)</small>(src
屬性) -
XMLHttpRequest
請求 -
fetch()
<small style="box-sizing: border-box;">(en-US)</small> 請求 - 所有用到
url
<small style="box-sizing: border-box;">(en-US)</small> 的 CSS 值(@font-face
、cursor
、background-image
<small style="box-sizing: border-box;">(en-US)</small>……等等)。 -
<object>
<small style="box-sizing: border-box;">(en-US)</small>(data
屬性)
其他資源如 web fonts 與 workers 也可能被認定為主動型混合內容,因為在 Chromium 就是這樣。