Defaults.Exposed

Defaults.Exposed修復 › 跨源隔離回應標頭(COOP / CORP / COEP)

如何修復 跨源隔離回應標頭(COOP / CORP / COEP)

三條可選的瀏覽器指令,控制別的網站可以如何與你的網站互動——在彈出視窗裡打開它、嵌入它的圖片和腳本,或把它的資源拉進自己的頁面。它們是現代加固,而非基礎必備,在我們的評分中屬於提示性:缺失它們不會拉低你的評分。但其中兩條安全的能堵住一處隱蔽的網路釣魚和頻寬竊取漏洞,而謹慎買家的 IT 團隊會注意到它們的存在。

對您業務的關鍵影響: 這三條裡有兩條能封堵進階的彈出視窗網路釣魚,並阻止別的網站盜鏈你的圖片和腳本(這既花你的頻寬,又可能洩露資料)。它們免費,開發人員約 15 分鐘即可搞定,且不會弄壞任何東西。第三條屬於進階,可能弄壞分析、字型和嵌入內容——大多數企業應將它關閉。它們都不影響你的評分,所以把它們當作錦上添花、而非臨陣慌張:做那兩條安全的,除非你確有需要,否則跳過那條有風險的。

這會讓您付出什麼代價

為什麼它重要。 這些是面向未來的瀏覽器加固回應標頭。在我們的方法學裡這三條都屬於提示性——它們登記為零分,永遠不動你的評分——因為它們是進階控制,一個網站完全可以正當地不用它們運作,而其中一條若誤用還會造成損害。我們對它們做報告,是為了讓你看清自己的處境。那兩條安全的(COOP 和 CORP)確實值得加:免費、快速,能在不弄壞任何東西的前提下堵住真實的彈出視窗網路釣魚和資源盜竊漏洞。

一句話說清這些是什麼

當有人訪問你的網站時,他們的瀏覽器不只是孤立地載入你的頁面——它還會決定別的網站可以如何與你的網站互動。另一個站點能不能在彈出視窗裡打開你的網站並一直抓著它?另一個站點能不能伸手把你的圖片和腳本嵌進它自己的頁面?你自己的網站能不能安全地使用某些強大且被鎖定的瀏覽器特性?

這三條回應標頭是你網站發給每位訪客瀏覽器的簡短、隱形的指令,恰好回答這些問題。它們按縮寫為人所知:

其中兩條(COOP 和 CORP)加起來安全且確有用處。第三條(COEP)屬於進階,若草率開啟可能弄壞東西。

最重要的一點要先說清:在我們的評分中,這三條都屬於提示性。它們不影響你的評分。缺一條不會讓你損失什麼。我們對它們做報告,是為了讓你看清處境、收割簡單的勝果——而不是為了讓你為一個數字慌張。

這會讓你付出什麼代價

這些是小眾風險,不是頭條級的——但它們真實存在,而修復免費。

每一條實際上是什麼

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:

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 解鎖的特性,直接移除該回應標頭即可——沒有它不會被罰分。

平台說明

常見錯誤

關於評分的說明

把話說得徹底明白:**這三項檢查都不影響你的評分。**它們在我們的方法學裡登記為提示性、零分,缺一條永遠不會讓你損失什麼。我們把它們呈現出來,是因為那兩條安全的是廉價、真實的改進,也因為看清全貌有用——而不是因為有個數字要去守。如果你在這裡什麼都不做,你的評分一模一樣。如果你加上 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 保持缺失。