本文为HTML标准解读系列文章,其他文章详见这里。
在所有浏览器的安全策略中,同源策略是最基础、最核心的策略,很多其他衍生出来的策略都只是同源策略的“补丁”,包括本文提到的其他安全策略:CORS、COOP、COEP。
两个URL,只有在协议、域名、端口都相同的情况下才算是“同源”,对于不同源(以下称为“跨源”)的页面或者资源,同源策略会在以下层面给他们施加约束:
-
js APIs的访问限制:有时候,我们可以通过
window.contentWindow、window.parent、window.opener、window.top访问其他页面的window对象。但是当该window对象指向的页面是跨源的时候,该window对象的绝大部分的属性/方法是不可访问的。比如,尝试使用
window.document访问跨源页面的DOM会报错:❌:Uncaught DOMException: Blocked a frame with origin “https://XXX.com” from accessing a cross-origin frame.
在跨源window对象上允许使用的为数不多的几个方法中,最有用的是
window.postMessage(),这个方法允许你在跨源windows之间安全地进行交流。 -
数据隔离:对于indexedDB以及localStorage/sessionStr

本文主要介绍了HTML页面的安全策略,包括同源策略、CORS、COOP(跨源打开程序策略)和COEP(跨源嵌入器策略)。同源策略限制了不同源之间的API访问和数据共享,CORS用于解决资源跨域问题。COOP可以切断页面间的window连接,提供更强的同源安全性,而COEP则控制了非同源资源的引入。通过结合使用COOP和COEP,可以实现跨源隔离,提高页面安全性。
最低0.47元/天 解锁文章
219

被折叠的 条评论
为什么被折叠?



