前端安全之跨域隔离

admin前端安全之跨域隔离已关闭评论条评论 2,995 次浏览

跨域隔离

要选择跨域隔离状态,您需要在主文档上发送以下HTTP标头:

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

Cross-Origin-Opener-Policy (COOP)

Cross-Origin-Opener-Policy (COOP)响应头允许您确保顶级文档不会与跨源文档共享浏览上下文组。

COOP将处理隔离您的文档,如果潜在攻击者在弹出窗口中打开它,则无法访问您的全局对象,从而防止一组称为XS Leaks的跨源攻击。

如果在新窗口中打开带有COOP的跨源文档,则打开的文档将没有对它的引用,并且 window.opener的属性将为null。这使您能够比rel=noopener对窗口的引用有更多的控制,rel=noopener只影响传出导航。

语法

Cross-Origin-Opener-Policy: unsafe-none | same-origin-allow-popups | same-origin
  • unsafe-none:这是默认值。允许将文档添加到其打开程序的浏览上下文组中,除非打开程序本身具有same-originsame-origin-allow-popups.
  • same-origin-allow-popups:保留对新打开的窗口或选项卡的引用,这些窗口或选项卡要么不设置COOP,要么通过将COOP设置为unsafe none而选择退出隔离。
  • same-origin: 将浏览上下文专门隔离到相同的源文档。跨源文档不会在同一浏览上下文中加载。

Cross-Origin-Embedder-Policy (COEP)

响应头阻止文档加载任何未显式授予文档权限的跨源资源(使用 CORP 或者 CORS).

语法

Cross-Origin-Embedder-Policy: unsafe-none | require-corp
  • unsafe-none:这是默认值。允许文档获取跨源资源,而无需通过CORS协议或Cross-Origin-Resource-Policy头授予显式权限。
  • require-corp: 文档只能从同一来源加载资源,或显式标记为可从另一来源加载的资源。如果跨源资源支持CORS,则必须使用crossorigin属性或 Cross-Origin-Resource-Policy头来加载它,而不会被COEP阻止。

Cross-Origin Resource Policy (CORP)

Cross-Origin-Resource-Policy响应头传达了这样一种愿望:浏览器不阻止对给定资源的cors跨源/跨站点请求。

语法

Cross-Origin-Resource-Policy: same-site | same-origin | cross-origin
  • same-site:只有来自同一站点的请求才能读取资源。
  • same-origin:只有来自同一来源(即scheme+host+port)的请求才能读取资源。
  • cross-origin:来自任何来源(同一站点和跨站点)的请求都可以读取资源。

Cross-origin read blocking(CORB)

Cross-origin read blocking(Cross-origin read blocking,又称CORB)是一种算法,它识别可疑的跨源资源获取(例如,在img元素中呈现JSON一样失败的获取),并在它们到达web页面之前阻止它们。CORB通过使敏感数据远离跨源web页面,降低了泄漏敏感数据的风险。

附录:术语说明

参考:

segmentfault.com/a/119000002…
web.dev/coop-coep/


分类目录