跨域资源策略 (CORP) 的实现
跨域资源策略 (CORP) 由 Cross-Origin-Resource-Policy 响应头设置,它允许网站和应用程序选择加入,以防御与某些跨域请求(例如由 <script> 和 <img> 元素发起的请求)相关的漏洞。
问题
一些侧信道硬件漏洞(也称为跨站泄露,或 XS-Leaks),例如 Meltdown 和 Spectre,利用了现代处理器推测执行功能中出现的竞态条件。此功能旨在提高性能,但可能会被利用来泄露敏感数据。
解决方案
使用 Cross-Origin-Resource-Policy 来阻止对给定资源的 no-cors 跨域请求。由于此策略是通过响应头表达的,因此实际请求并未被阻止。相反,浏览器会通过剥离响应体来阻止结果泄露。
可能的值为
same-origin-
将资源访问限制在来自同源的请求。这推荐用于返回敏感用户信息或私有 API 的 URL。
same-site-
将资源访问限制在来自同一站点的请求。这推荐用于其功能在多个其他同站域名之间共享的源的响应。例如,一个公司 CDN,它提供静态资源;一个单一登录 (SSO) 应用,它处理身份验证。
cross-origin-
允许跨域请求访问资源。这仅推荐用于广泛使用的源的响应,例如公共 CDN 或小部件。如果未设置
Cross-Origin-Resource-Policy,这是默认值。
为您的网站设置尽可能严格的值。
反过来,如果您的网站需要访问跨域资源,则通过发送 Cross-Origin-Embedder-Policy 标头以及相关的请求来选择更好的默认设置。这将阻止加载未明确发送 Cross-Origin-Resource-Policy: cross-origin 标头的跨域资源。
示例
指示浏览器禁止以 no-cors 模式发起的跨域请求
Cross-Origin-Resource-Policy: same-origin
指示浏览器允许跨域资源访问,包括访问具有无节流定时器的功能(例如 SharedArrayBuffer 对象或 Performance.now())
Cross-Origin-Resource-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
这也允许此类资源被嵌入。