新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
属性将在window
和worker
作用域中可用,目前仅在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月底举行,所有录制的会话已经上线。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。