跨源资源策略 (CORP) 实现

跨源资源策略 (CORP) 由 Cross-Origin-Resource-Policy 响应标头设置,该标头允许网站和应用程序选择加入针对与某些跨源请求相关的漏洞的保护(例如由 <script><img> 元素发出的请求)。

问题

某些侧信道硬件漏洞(也称为跨站点泄漏或 XS-Leaks),例如 熔断幽灵,利用了作为现代处理器推测执行功能一部分而产生的竞争条件。此功能旨在提高性能,但可以被操纵以泄露敏感数据。

解决方案

使用 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 模式下发出的跨源请求

http
Cross-Origin-Resource-Policy: same-origin

指示浏览器允许跨源资源访问,包括访问具有无节流计时器(例如 SharedArrayBuffer 对象或 Performance.now())的功能。

http
Cross-Origin-Resource-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp

这也允许嵌入此类资源。

另请参阅