Defaults.Exposed › 修復 › 跨源隔離回應標頭(COOP / CORP / COEP)
如何修復 跨源隔離回應標頭(COOP / CORP / COEP)
三條可選的瀏覽器指令,控制別的網站可以如何與你的網站互動——在彈出視窗裡打開它、嵌入它的圖片和腳本,或把它的資源拉進自己的頁面。它們是現代加固,而非基礎必備,在我們的評分中屬於提示性:缺失它們不會拉低你的評分。但其中兩條安全的能堵住一處隱蔽的網路釣魚和頻寬竊取漏洞,而謹慎買家的 IT 團隊會注意到它們的存在。
對您業務的關鍵影響: 這三條裡有兩條能封堵進階的彈出視窗網路釣魚,並阻止別的網站盜鏈你的圖片和腳本(這既花你的頻寬,又可能洩露資料)。它們免費,開發人員約 15 分鐘即可搞定,且不會弄壞任何東西。第三條屬於進階,可能弄壞分析、字型和嵌入內容——大多數企業應將它關閉。它們都不影響你的評分,所以把它們當作錦上添花、而非臨陣慌張:做那兩條安全的,除非你確有需要,否則跳過那條有風險的。
這會讓您付出什麼代價
- 騙子在彈出視窗裡打開你真實的網站,並對它保持遠端控制——一旦你的客戶移開視線,就悄悄把他們重定向到一個假的登入或付款頁。安全的那條回應標頭(COOP)會徹底切斷這種控制鏈路。
- 別的網站直接從你的伺服器嵌入你的產品圖、標誌和腳本(盜鏈)——每次他們的訪客載入頁面,你都要為頻寬買單,而你的素材還會出現在你絕不會認可的網站上。
- 潛在客戶的安全團隊在簽約前做一次回應標頭掃描,看到你加了現代的跨源加固——信號不大,卻足以讓你落進認真對待安全那一欄,而不是最低限度那一欄。
- 一位力求周全的開發人員未經測試就開啟了進階隔離回應標頭(COEP)——結果一夜之間弄壞了你的 Google Analytics、網頁字型和嵌入式預訂小工具。分清哪條安全、哪條有風險,能避免這種自作自受的故障。
- 稽核方的清單提到跨源隔離;比起解釋為什麼什麼都沒有,你更願意在那兩條安全項上顯示已到位且正確。
為什麼它重要。 這些是面向未來的瀏覽器加固回應標頭。在我們的方法學裡這三條都屬於提示性——它們登記為零分,永遠不動你的評分——因為它們是進階控制,一個網站完全可以正當地不用它們運作,而其中一條若誤用還會造成損害。我們對它們做報告,是為了讓你看清自己的處境。那兩條安全的(COOP 和 CORP)確實值得加:免費、快速,能在不弄壞任何東西的前提下堵住真實的彈出視窗網路釣魚和資源盜竊漏洞。
一句話說清這些是什麼
當有人訪問你的網站時,他們的瀏覽器不只是孤立地載入你的頁面——它還會決定別的網站可以如何與你的網站互動。另一個站點能不能在彈出視窗裡打開你的網站並一直抓著它?另一個站點能不能伸手把你的圖片和腳本嵌進它自己的頁面?你自己的網站能不能安全地使用某些強大且被鎖定的瀏覽器特性?
這三條回應標頭是你網站發給每位訪客瀏覽器的簡短、隱形的指令,恰好回答這些問題。它們按縮寫為人所知:
- COOP——*Cross-Origin-Opener-Policy(跨源開啟方策略)。*控制那些在彈出視窗裡打開你網站的別的站點,能否對它保持遠端控制。
- CORP——*Cross-Origin-Resource-Policy(跨源資源策略)。*控制別的站點是否被允許把你的圖片、腳本和其他檔案嵌入它們自己的頁面。
- COEP——*Cross-Origin-Embedder-Policy(跨源嵌入方策略)。*一個進階控制,與 COOP 結合後會隔離你的頁面,使它能安全地使用某些強大的瀏覽器特性。
其中兩條(COOP 和 CORP)加起來安全且確有用處。第三條(COEP)屬於進階,若草率開啟可能弄壞東西。
最重要的一點要先說清:在我們的評分中,這三條都屬於提示性。它們不影響你的評分。缺一條不會讓你損失什麼。我們對它們做報告,是為了讓你看清處境、收割簡單的勝果——而不是為了讓你為一個數字慌張。
這會讓你付出什麼代價
這些是小眾風險,不是頭條級的——但它們真實存在,而修復免費。
-
**能保持遠端控制你真實網站的彈出視窗網路釣魚。**沒有 COOP,騙子的頁面可以在彈出視窗裡打開你真實的網站,並保持對它的即時參考。當你客戶的注意力在騙子頁面上時,攻擊者就能在客戶轉回頭的那一刻,把那個彈出視窗——網址列裡是你真實的網域——重定向到一個假的登入或付款頁。COOP 設為 same-origin 會切斷這種控制鏈路,讓彈出視窗無法被人當傀儡操控。
-
**別的網站偷你的頻寬(並把你的素材放到你不想要的地方)。**沒有 CORP,網際網路上任何網站都能直接從你伺服器嵌入你的產品圖、標誌、腳本和其他檔案——也就是盜鏈。他們頁面的每位訪客都從你這裡下載檔案,記在你的頻寬帳單上,你的素材還出現在你從未認可的語境裡。CORP 設為 same-origin 會阻止外部站點嵌入你的資源。
-
**進階瀏覽器攻擊的一條隱蔽資料洩露路徑。**讓盜鏈成為可能的那種跨源嵌入,也是進階旁路瀏覽器攻擊(Spectre 家族)用來讀取它們本不該讀到的資料的路徑之一。COOP 和 CORP 一起會在瀏覽器層面關閉這條路徑。對大多數小企業來說這是雙保險,但是免費的雙保險。
-
**錯用回應標頭導致自作自受的故障。**那條進階的 COEP,要求你網站載入的每一個資源都明確選擇加入。未經測試就開啟它,你的分析、網頁字型、嵌入式地圖、預訂小工具和第三方腳本可能全都載入不出來——因為它們都沒被要求選擇加入。這是這些回應標頭唯一可能真正傷到你的方式,而且完全可以避免:不要未經測試就啟用 COEP。
-
**錯失給謹慎買家的一個簡單信號。**當潛在客戶的 IT 團隊在簽約前掃描你的回應標頭時,發現現代跨源加固已到位,是一個雖小卻真實的這些人認真對待安全的信號。它單憑自己贏不下一筆交易——但讓它免費地落在這本帳的正確一邊,何樂而不為。
每一條實際上是什麼
COOP——Cross-Origin-Opener-Policy(安全,推薦)
當另一個網站用彈出視窗或 window.open 打開你的網站時,兩個視窗通常能保持對彼此的參考。這種鏈路可被濫用:打開方可以操縱或重定向你的視窗、讀取它網址的片段,並利用你真實的網域上演足以亂真的網路釣魚。COOP: same-origin 打破這種關係——你的視窗與任何跨源打開它的東西相隔離。正常瀏覽、你自己的內部連結和普通導航完全不受影響。
良好的狀態長什麼樣:Cross-Origin-Opener-Policy: same-origin。
CORP——Cross-Origin-Resource-Policy(安全,推薦)
預設情況下,你的圖片、腳本和其他檔案可被任何地方的任何站點嵌入。CORP: same-origin 告訴瀏覽器拒絕對你資源的跨源嵌入——這樣別的站點就不能盜鏈你的素材或把它們拉進自己的頁面。你自己的網站照舊載入自己的資源;只有外部站點被擋住。
良好的狀態長什麼樣:Cross-Origin-Resource-Policy: same-origin。(如果你有意發布供他人嵌入的素材——公開標誌、開放 API——你的開發人員可以對那些特定回應放寬它。)
COEP——Cross-Origin-Embedder-Policy(進階,通常關閉)
COEP 完成跨源隔離:與 COOP 結合後,它要求你頁面載入的每一個資源都明確選擇加入(透過 CORS 或 CORP)。做對了,這會解鎖某些強大的瀏覽器特性(如 SharedArrayBuffer),並增加一層對 Spectre 類攻擊的防護。但是因為它要求你載入的一切都選擇加入,它很容易弄壞那些並非為選擇加入而建的第三方工具——分析、字型、嵌入式小工具。大多數網站不需要它解鎖的特性,也不該承擔那份弄壞的風險。
**良好的狀態長什麼樣:**對極少數確有需要的網站,Cross-Origin-Embedder-Policy: credentialless——更安全的取值,比 require-corp 更不容易弄壞外部資源。對其他所有人,缺失也沒問題,我們的報告不會因此扣你的分。
如何修復(免費,約 15 分鐘)
**把這交給你的 IT 人員或網頁開發人員——修復是免費的。**加 COOP 和 CORP 是你伺服器或 CDN 上的幾條單行設定;沒有許可費,也沒有持續成本。給業主的唯一指令是:做那兩條安全的,不要未經測試就啟用 COEP。
這些是回應標頭,設在你網站回應產生的地方——如果你有 CDN(如 Cloudflare)就最方便在那裡設,否則就在你的 Web 伺服器設定裡。
兩條安全的回應標頭(推薦給所有人)
Cloudflare——Rules → Transform Rules → Modify Response Headers → Set:
Cross-Origin-Opener-Policy=same-originCross-Origin-Resource-Policy=same-origin
Nginx:
add_header Cross-Origin-Opener-Policy "same-origin" always;
add_header Cross-Origin-Resource-Policy "same-origin" always;
Apache:
Header always set Cross-Origin-Opener-Policy "same-origin"
Header always set Cross-Origin-Resource-Policy "same-origin"
這些加起來安全,不會弄壞正常功能。部署後,重新載入幾個頁面,確認網站表現和之前完全一致(應該如此)。
那條進階回應標頭(僅在你確有需要時)
**未在測試環境中先行測試,請勿開啟它。**COEP 可能弄壞分析、字型和嵌入式小工具。
**Cloudflare:**Transform Rules → 把 Cross-Origin-Embedder-Policy 設為 credentialless。
Nginx:
add_header Cross-Origin-Embedder-Policy "credentialless" always;
用 credentialless 而非 require-corp——它更不容易弄壞外部資源。在測試環境徹底測試;留意任何停止載入的第三方腳本、字型或嵌入內容。如果有東西壞了、而你又並不真需要 COEP 解鎖的特性,直接移除該回應標頭即可——沒有它不會被罰分。
平台說明
- **Google Workspace / Microsoft 365:**這些驅動的是你的信箱,不是你的網站,所以這裡沒什麼要設的。這些回應標頭屬於託管你網站的地方(你的 CDN、主機或伺服器)。
- **常見託管主機 / 建站平台(Wix、Squarespace、Shopify 等):**較低檔套餐可能無法設定自訂回應標頭。如果你加不了,那也沒關係——這些是提示性的,不影響你的評分。把你的網站放到 Cloudflare 這類 CDN 後面,是獲得回應標頭控制權的常規辦法。
- **自有主機上的 WordPress:**在你的 Web 伺服器設定裡設(上面的 Nginx/Apache),或透過你的 CDN 設,盡量不要用外掛程式來設——伺服器/CDN 層面更乾淨,且對每個回應都生效。
常見錯誤
- **為了周全而啟用 COEP,結果弄壞了網站。**這是頭號錯誤。COEP 要求你載入的一切都選擇加入;未經測試就翻開它,你的分析、字型和嵌入內容可能消失。如果你不需要它解鎖的瀏覽器特性,就別設它。
- **因為掃描器提到了它們就當作緊急事項。**它們是提示性的。計分的網頁回應標頭(HTTPS、HSTS、CSP、點擊劫持、MIME 嗅探)優先——在這裡花任何精力之前,先修好那些。
- **在你確實發布可嵌入素材時把 CORP 設得太嚴。**如果你有意提供標誌、徽章或 API 供別的站點使用,一刀切的
same-originCORP 會擋住它們。只對那些回應放寬,而不是乾脆全站放棄這條回應標頭。 - **在頁面/應用層面加回應標頭,漏掉部分回應。**在伺服器或 CDN 層面設定,讓它們對每個回應都生效(圖片、腳本、API 端點),而不僅是 HTML 頁面。
- **把這些和 SSL 小鎖混為一談。**HTTPS 給連線加密;這些控制跨站互動。它們毫不相干,你兩者都要。
關於評分的說明
把話說得徹底明白:**這三項檢查都不影響你的評分。**它們在我們的方法學裡登記為提示性、零分,缺一條永遠不會讓你損失什麼。我們把它們呈現出來,是因為那兩條安全的是廉價、真實的改進,也因為看清全貌有用——而不是因為有個數字要去守。如果你在這裡什麼都不做,你的評分一模一樣。如果你加上 COOP 和 CORP,你就免費堵住了幾處真實(雖小眾)的漏洞。這才是看待本頁的正確方式:可選的錦上添花,外加一個被清楚標出、需要避開的陷阱。
常見問題
這些不影響我的評分——那我到底該不該費心?
其中兩條該,一條多半不該。COOP 和 CORP 免費、幾分鐘搞定、不會弄壞你的網站——它們能堵住真實(雖小眾)的攻擊路徑,所以值得作為廉價的安全衛生來做。COEP 屬於進階,可能弄壞第三方工具,所以大多數企業應將它關閉,除非確有需要它解鎖的瀏覽器特性。這三條都不改變你的得分,所以並不急——把那兩條安全的當作下次開發人員進站時的順手收尾即可。
我不懂技術——這是我必須去處理的事嗎?
不用你親自做,也不急。因為它們是提示性的,跳過它們你的評分不會有任何損失。如果你想加那兩條安全的,把如何修復一節交給管理你網站或 CDN 的人——它無非是幾條單行設定,修復免費。唯一要明確提示的是 COEP:告訴他們不要未經測試就開啟它,因為它可能弄壞分析和嵌入式小工具。
這些和那些會影響我評分的回應標頭有什麼不同?
那些計分的網頁安全回應標頭——HTTPS 跳轉、HSTS、Content-Security-Policy、點擊劫持防護(X-Frame-Options)和 MIME 嗅探防護——防的是常見、被廣泛利用的攻擊,所以缺失它們會扣分。本頁這三條(COOP、CORP、COEP)是更新、更專門的瀏覽器隔離控制。它們是良好實踐,但還不是基線期望,所以我們報告它們卻不計分。先做計分那些;這些是上面的錦上添花。
加上 COOP 或 CORP 會弄壞我的網站或合作夥伴的整合嗎?
推薦的設定(兩條都用 same-origin)是按安全設計的。COOP 只切斷你網站在彈出視窗裡被打開時與那些視窗的鏈路——正常瀏覽、你自己的頁面和普通連結都不受影響。CORP 只阻止別的網站嵌入你的圖片和腳本;你自己的網站照舊載入自己的資源。如果你確實提供了一些供別的網站嵌入的素材(比如公開標誌或一個 API),你的開發人員可以對那些特定回應使用更寬鬆的設定。真正有弄壞風險的是 COEP——除非已測試,否則讓它保持關閉。
盜鏈到底讓我損失什麼?
當另一個網站不自己託管副本、而是直接從你伺服器嵌入你的圖片或腳本時,他們頁面的每位訪客都從你這裡下載它——記在你的頻寬帳單上,還讓你的素材出現在你未認可的語境裡。對小企業而言這很少是災難性的,但這是白白外流的錢,而 CORP(same-origin)會在瀏覽器層面把它擋住。它還能堵住一條進階(Spectre 類)瀏覽器攻擊所依賴的隱蔽資料洩露路徑。
這每一條良好的狀態長什麼樣?
COOP:設為 same-origin 的 Cross-Origin-Opener-Policy 回應標頭。CORP:設為 same-origin 的 Cross-Origin-Resource-Policy 回應標頭。COEP:一條 Cross-Origin-Embedder-Policy 回應標頭——而如果你真要設,credentialless 比 require-corp 更安全。我們的報告只是記錄每條是否存在、設成了什麼;它絕不會因缺失某條而扣你的分。目標是讓 COOP 和 CORP 存在;除非你已測試過,否則讓 COEP 保持缺失。