Cross-Origin Read Blocking (CORB)
背景
有一天, 打开浏览器看到控制台报错:
Cross-Origin Read Blocking (CORB) 已屏蔽 MIME 类型为 text/html 的跨域响应 https://xx.xxxx.com/stat/record?it=0&lshowp=2560x1440&0.1996155506933639 如需了解详情,请参阅 https://www.chromestatus.com/feature/5629709824032768
于是乎, 就去了解一下什么是 CORB. 具体如下
什么是 CORB
Cross-Origin Read Blocking (CORB) 是一个新的 web 平台安全功能, 它能够帮助减少线程之间的旁路攻击(side-channel attacks)
;
CORB 的目的是防止浏览器向网页接收某些跨源网络响应,因为这些响应可能包含敏感信息,而且现有的网页功能不需要这些响应。
例如: 它将清除一个从<script>
或者 <img>
标签发起的跨源text/html
响应. 将响应的内容,用空值代替.
这是网站隔离(Site Isolation)
非常重要的一部分.
In Chrome M68 and later CORB is active by default - no special actions need to be taken to activate CORB
为什么要有 CORB
在同源策略(same-origin policy)下通常会阻止一个网站读取其它源的任意网络资源.
但是, 在实际情况中, 实施同源策略并非只是简单阻止所有的跨域资源.
浏览器对于有些情况是允许加载跨域资源的, 例如 <img>
, <script>
标签, 它们可以加载跨域的资源;
并且跨源资源共享(CORS)选择性地可以读取跨域的资源;
允许加载跨域资源, 意味着存在着安全隐患.
场景: 用户登录了 victim.com 之后, 又去访问了 evil.com 的恶意站点.
在 evil.com 中有 <script src="victim.com/login">
的元素, 则浏览器会向 victim.com 发起请求, 且会把敏感信息返回给浏览器. 此时, 用户在 evil.com 页面所在的内存中就留有的 victim.com 的敏感数据;
CORB 会在敏感信息加载到页面内存之前,将其拦截掉,如此,敏感信息既不会暴露于浏览器,也不会进驻内存空间,得到了很好的保护。
CORB 可以减少下面的攻击
XSSI 是一种攻击方式. 它通过<script>
指向一个不是 JavaScript 代码文件的目标资源, 并且让浏览器执行.
具体的情况, 可以看看 JSON_Hijacking_Gareth_Heyes
<script charset="ISO