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 保持缺失。