用途
该技能用于在需要跨源隔离(cross-origin isolation)时,指导开发者正确配置 COOP(Cross-Origin-Opener-Policy)、COEP(Cross-Origin-Embedder-Policy)和 CORP(Cross-Origin-Resource-Policy)响应头。跨源隔离能够降低基于 opener 的攻击和 XS-Leak 风险,并且是现代浏览器中启用 SharedArrayBuffer 等强大浏览器功能的必要条件。
主要能力
- 判断应用是否需要 COOP/COEP 来实现跨源隔离。
- 审查安全响应头与嵌入资源,确认其是否与跨源隔离兼容。
- 审计所有跨源脚本、iframe、图片、worker 和字体,确保在启用 COEP 前资源已就绪。
- 指导为可嵌入资源按需配置 CORS 或 Cross-Origin-Resource-Policy。
- 验证运行时是否真正进入跨源隔离状态,即 self.crossOriginIsolated === true。
- 在代码审查中检查服务器响应头、第三方集成、弹窗、worker 和资源响应,标记会阻止隔离或在隔离生效后导致破坏的具体响应或集成。
使用方式
该技能以检查、修复、解释和代码审查的形式提供指导:
- 检查:审查安全响应头与嵌入资源,判断应用是否需要 COOP/COEP,资源是否兼容 COEP,以及运行时是否真正变为 crossOriginIsolated。
- 修复:在审计依赖之后才添加 COOP 和 COEP,确保子资源按需使用 CORP 或 CORS,并验证最终文档在浏览器中变为 crossOriginIsolated。
- 解释:说明 COOP、COEP 和 CORP 如何协同工作、它们防护什么,以及为什么第三方嵌入常常导致部署失败。
- 代码审查:审查与跨源隔离相关的服务器响应头、第三方集成、弹窗、worker 和资源响应,标记会阻止隔离或在隔离生效后导致破坏的具体响应或集成。
完整的实现细节、代码示例和框架相关指导见 references/rule.md。规则页面:https://frontendchecklist.io/en/rules/security/cross-origin-isolation
适用场景
- 安全敏感的 Web 应用。
- 使用 SharedArrayBuffer 的应用。
- 重度依赖 worker 的应用。
- 编辑器类应用。
- 需要跨源隔离的测量功能。
限制
跨源隔离如果部署不慎会破坏现有集成,因此需要有计划地逐步推出,而不是直接复制粘贴一段响应头。第三方嵌入往往是成功部署跨源隔离的主要障碍。