Chrome与Firefox中新增的COOP和COEP跨源策略以增强安全性

新COOP和COEP策略的背景与动机

Eiji Kitamura在Google的web.dev live活动中讨论了新的COOP(Cross-Origin-Opener-Policy)和COEP(Cross-Origin-Embedder-Policy)策略。这些策略规定了浏览器如何处理跨源资源,旨在创建一个跨源隔离环境,以防范Spectre攻击,并恢复之前被禁用的强大功能,如SharedArrayMemoryBuffer等。

跨源隔离的优势

跨源隔离状态允许网页使用以下特权功能:

  • SharedArrayBuffer(WebAssembly线程所需)
  • performance.measureMemory()
  • JS Self-Profiling API

这些功能在2018年初因Spectre攻击而被禁用,新策略使开发者能够重新使用跨线程的共享内存和高分辨率计时器。

实现跨源隔离的方法

开发者需要为顶级文档设置两个HTTP头来实现跨源隔离并启用上述特权功能:

  • Cross-Origin-Opener-Policy (COOP),值为same-origin(保护源免受攻击)
  • Cross-Origin-Embedder-Policy (COEP),值为require-corp(保护受害者免受源的攻击)

crossOriginIsolated属性

crossOriginIsolated属性将在windowworker作用域中可用,目前仅在Firefox中实现。开发者可以通过该属性判断是否处于跨源隔离状态,从而决定是否使用SharedArrayBuffer

COOP的作用

COOP允许顶级文档断开其窗口与浏览上下文组中其他窗口的关联(例如弹出窗口与其打开者之间的关联)。这可以防止不同浏览上下文之间的直接DOM访问,从而防范进程范围的攻击(如Spectre)和跨窗口攻击。

COEP的作用

COEP确保文档只能加载明确授权加载的资源,通过设置正确的CORP或CORS头来实现。COEP在iframe上的递归应用将资源加载限制传播到所有后代上下文。

CDN和CORP的重要性

Kitamura鼓励CDN所有者在其服务器上广泛部署CORP(Cross-Origin-Resource-Policy),因为随着时间的推移,浏览器将开始要求页面选择加入跨源隔离,Cross-Origin-Embedder-Policy的使用将增加,CORP在服务器配置中的重要性也将随之增加。

相关链接和资源

Kitamura的完整演讲可以在线观看,其中包含了关于跨源隔离动机和行为的丰富解释和图示。web.dev LIVE是一个由Google赞助的为期三天的在线社区活动,2020年的活动在6月底举行,所有录制的会话已经上线。

阅读 66
0 条评论