5

Chrome 91 将启用针对 SharedArrayBuffers 的跨域限制

 3 years ago
source link: https://blog.p2hp.com/archives/8026
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
Chrome 91 将启用针对 SharedArrayBuffers 的跨域限制

预计从今年 5 月的 Chrome 91 开始,所有平台都将需要启用跨域隔离,以访问诸如 SharedArrayBuffer 和 performance.measureUserAgentSpecificMemory() 之类的 API 。这将使桌面平台与 Android 保持一致,后者在 Chrome 88 中发布了此限制。

如果需要使用这些 API,必须为页面提供以下标头来确保页面是跨域隔离的:

Cross-Origin-Embedder-Policy: require-corp
Cross-Origin-Opener-Policy: same-origin

在执行此操作后,除非资源通过 Cross-Origin-Resource-Policy 标头或 CORS 标头(Access-Control-Allow- *等)明确允许,否则页面将无法加载跨域内容。

SharedArrayBuffer 于 2017 年 7 月的 Chrome 60 中引入,然而在次年 1 月就发现了一个严重漏洞 —— 在一些主流 CPU 中,数据高速缓存定时可能被滥用,从而导致在代码可以读取其不应该访问的内存。当时,在降低诸如 performance.now() 等计时器的频率仍无法解决问题后,Chrome 选择完全禁用 SharedArrayBuffer,直到 18 年 7 月份的 Chrome 68 中采取了跨域读取阻止等缓解措施后才重新开放 SharedArrayBuffer。

然而该方案仍有缺陷,不仅在移动设备上无法执行相同的操作,而且仅阻止了“不正确”的数据格式,无法阻止 URL 里的有效 CSS/JS/images 可能包含的私有数据。因此,现在 Chrome 提出了一个更完善的解决方案,即通过页面附带的 COOP 和 COEP 标头完成跨域隔离声明,以访问 SharedArrayBuffer 和其它具有类似功能的 API,并且可以通过 Cross-Origin-Resource-Policy 或 CORS 嵌入其它内容。

Firefox 在 2020 年 7 月 的 79 版本中率先发布了此限制,而 Chrome 88 则在 Android 中引入,桌面端将从 Chrome 91 开始引入。关于跨域限制的详细信息,可以查阅其官方博客

更多参考 https://stackoverflow.com/questions/66667073/adding-coop-coep-http-header-causes-third-party-script-to-stop-working-on-chrome?r=SearchResults


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK