We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
spruce 2022/07/16 人已麻
有一天, 打开浏览器看到控制台报错: Cross-Origin Read Blocking (CORB) 已屏蔽 MIME 类型为 text/html 的跨域响应 https://xx.xxxx.com/a.js 如需了解详情,请参阅 https://www.chromestatus.com/feature/5629709824032768 于是乎, 就去了解一下什么是 CORB. 具体如下
Cross-Origin Read Blocking (CORB)是一个新的 web 平台安全功能, 它能够帮助减少线程之间的旁路攻击(side-channel attacks); CORB 的目的是防止浏览器向网页接收某些跨源网络响应,因为这些响应可能包含敏感信息,而且现有的网页功能不需要这些响应。 例如: 它将清除一个从 script 或者 img 标签发起的跨源text/html响应. 将响应的内容,用空值代替. 这是网站隔离(Site Isolation)非常重要的一部分.
在同源策略(same-origin policy)下通常会阻止一个网站读取其它源的任意网络资源. 但是, 在实际情况中, 实施同源策略并非只是简单阻止所有的跨域资源. 浏览器对于有些情况是允许加载跨域资源的, 例如 img , script 标签, 它们可以加载跨域的资源 并且跨源资源共享(CORS)选择性地可以读取跨域的资源; 允许加载跨域资源, 意味着存在着安全隐患. 场景: 用户登录了 victim.com 之后, 又去访问了 evil.com 的恶意站点. 在 evil.com 中有 script src="victim.com/login" 的元素, 则浏览器会向 victim.com 发起请求, 且会把敏感信息返回给浏览器. 此时, 用户在 evil.com 页面所在的内存中就留有的 victim.com 的敏感数据; CORB 会在敏感信息加载到页面内存之前,将其拦截掉,如此,敏感信息既不会暴露于浏览器,也不会进驻内存空间,得到了很好的保护。
Cross-Site Script Inclusion (XSSI) XSSI 是一种攻击方式. 它通过 script 指向一个不是 JavaScript 代码文件的目标资源, 并且让浏览器执行. 具体的情况, 可以看看 JSON_Hijacking_Gareth_Heyes
<script charset="ISO-8859-1" src="polyglot/uploads/xss.jpg"></script>
CORB 阻止了这一类攻击, 因为 CORB 将阻止 script 标签发起的这种请求; 通过 CPU 预测执行,而引起的旁路攻击 (例如 Spectre). 例如: 攻击者会使用 img标签来加载跨域的文件, 让 JavaScript 在执行过程中, 将进程中的信息暴露给攻击者
<img src="https://example.com/secret.json" />
CORB 通过阻止 JSON 的资源加载到进程的内存中, 可以阻止这一类攻击.
<a href="/images/myw3schoolsimage.jpg" download></a>
<link rel="prefetch" ...>
当跨域请求回来的数据 MIME type 同跨域标签应有的 MIME 类型不匹配时,浏览器会启动 CORB 保护数据不被泄漏. 例如: script 标签请求的响应是 json. img 标签请求回来的是 json. 目前, 针对下面的响应类型会触发 CORB
在某些情况下, JSONP 会触发 CORB 例如:
通过 script 标签, 获取到 html 的内容(因为指定了 nosniff, 浏览器会直接认为响应内容是 text/html). 从而会触发 CORB, 响应会被清空;
首先,看到不会影响iframe我就去用了,结果发现没办法获取,因为不同域的不能使用contentDocument
The text was updated successfully, but these errors were encountered:
No branches or pull requests
烦人的CROB
Cross-Origin Read Blocking
有一天, 打开浏览器看到控制台报错:
Cross-Origin Read Blocking (CORB) 已屏蔽 MIME 类型为 text/html 的跨域响应 https://xx.xxxx.com/a.js 如需了解详情,请参阅 https://www.chromestatus.com/feature/5629709824032768
于是乎, 就去了解一下什么是 CORB. 具体如下
什么是 CORB
Cross-Origin Read Blocking (CORB)是一个新的 web 平台安全功能, 它能够帮助减少线程之间的旁路攻击(side-channel attacks);
CORB 的目的是防止浏览器向网页接收某些跨源网络响应,因为这些响应可能包含敏感信息,而且现有的网页功能不需要这些响应。
例如: 它将清除一个从 script 或者 img 标签发起的跨源text/html响应. 将响应的内容,用空值代替.
这是网站隔离(Site Isolation)非常重要的一部分.
为什么要有 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 可以减少下面的攻击
Cross-Site Script Inclusion (XSSI)
XSSI 是一种攻击方式. 它通过 script 指向一个不是 JavaScript 代码文件的目标资源, 并且让浏览器执行.
具体的情况, 可以看看 JSON_Hijacking_Gareth_Heyes
CORB 阻止了这一类攻击, 因为 CORB 将阻止 script 标签发起的这种请求;
通过 CPU 预测执行,而引起的旁路攻击 (例如 Spectre).
例如: 攻击者会使用 img标签来加载跨域的文件, 让 JavaScript 在执行过程中, 将进程中的信息暴露给攻击者
CORB 通过阻止 JSON 的资源加载到进程的内存中, 可以阻止这一类攻击.
CORB 不会影响的内容
navigation requests或者请求的[request destination]
(https://fetch.spec.whatwg.org/#concept-request-destination) 是"document", “embed”, “frame”, “iframe”, 或者 “object”.
Download requests
XHR and fetch()
ping, navigator.sendBeacon()
下列地址的请求
“image” 请求图片, /favicon.ico, SVG图片, CSS背景图片, etc.
“audio”, “video” or “track”
“font”
“style”
什么样的内容会被 CORB-protected
当跨域请求回来的数据 MIME type 同跨域标签应有的 MIME 类型不匹配时,浏览器会启动 CORB 保护数据不被泄漏.
例如: script 标签请求的响应是 json. img 标签请求回来的是 json.
目前, 针对下面的响应类型会触发 CORB
JSON
HTML
XML
pdf 以及More CORB-protected MIME types - adding protected types one-by-one
JSONP 与 CORB
JSONP 算是一种讨巧的跨域请求方式. 具体的情况可以看看 说说 JSON 和 JSONP,也许你会豁然开朗,含 jQuery 用例, 这里不再赘述;
JSONP 和 CORB 有什么关系呢?
在某些情况下, JSONP 会触发 CORB
例如:
响应体 Body: 是 js 代码
Content-Type: text/html
X-Content-Type-Options: ‘nosniff’
通过 script 标签, 获取到 html 的内容(因为指定了 nosniff, 浏览器会直接认为响应内容是 text/html). 从而会触发 CORB, 响应会被清空;
怎样解决
首先,看到不会影响iframe我就去用了,结果发现没办法获取,因为不同域的不能使用contentDocument
所以,没办法解决,只有把CROB内容换成不是CROB内容!!! :(
The text was updated successfully, but these errors were encountered: