Cross-Origin Read Blocking (CORB)

Cross-Origin Read Blocking (CORB) 是一种安全机制,用于保护Web应用免受跨域读取攻击。

跨域读取攻击可能会导致网站上的敏感信息被恶意代码访问和读取。这种攻击方式通常利用浏览器对不同源的资源访问的限制进行绕过。

CORB通过在浏览器中引入一种新的安全检测机制来解决这个问题。当浏览器尝试读取跨域资源(如图片、样式表、脚本等)时,CORB将检测是否存在安全问题。如果存在潜在的安全问题,CORB将阻止浏览器读取该资源,并返回一个空的响应,以保护网站的敏感信息。

CORB的工作原理

当浏览器发起跨域请求时,它会在收到响应之前先检查响应的内容类型。如果响应的内容类型不是被视为安全的类型(如HTML、XML、JSON等),浏览器就会阻止网页读取该响应的内容。这是一种安全机制,用于阻止跨域读取攻击,旨在保护Web应用程序免受恶意网站的攻击。通过阻止恶意网站读取其他域名下的敏感数据,CORB可以有效保护用户的隐私和安全。

CORB 可以缓解哪些攻击?

  • Cross-Site Script Inclusion (XSSI)

    • <script>XSSI 是一种将标签指向非 JavaScript 目标资源的技术,并在将结果资源解释为 JavaScript 时观察一些副作用。这种攻击的一个早期例子是在 2006 年发现的:通过覆盖 JavaScript 数组构造函数,JSON 列表的内容可以被简单地拦截<script src="https://example.com/secret.json">:虽然数组构造函数攻击向量在当前浏览器中已得到修复,但在接下来的十年中发现并修复了许多类似的漏洞。
    • CORB 可防止此类攻击,因为受 CORB 保护的资源将被阻止传递到跨站点<script>元素。
    • 在缺乏其他 XSSI 防御(例如XSRF 令牌和/或JSON 安全前缀)的情况下,CORB 特别有价值。此外,XSSI 防御(例如JSON 安全前缀)的存在也可以用作 CORB 算法的信号,表明资源应该受到 CORB 保护。
  • Speculative Side Channel Attack (例如: Spectre).

    • 例如,攻击者可能使用一个<img src="https://example.com/secret.json">元素将跨站点秘密拉入攻击者的 JavaScript 运行的进程中,然后使用推测性侧通道攻击(例如Spectre)来读取秘密。
    • 当与站点隔离一起使用时,CORB 可以通过防止 JSON 资源出现在托管跨站点页面的进程的内存中来防止此类攻击。

CORB 如何“阻止”响应?

当浏览器接收到跨域请求并收到响应时,CORB会检查响应的内容类型(MIME类型)。如果响应的内容类型被视为可能包含敏感信息(例如,MIME类型为"text/html"且响应中可能包含JavaScript脚本),浏览器会自动阻止该响应的读取,避免恶意网站利用跨站脚本攻击(XSS)来读取其他网站的数据。

这一阻止过程是在浏览器内部进行的,用户通常无法直接感知。浏览器通过解析响应头中的Content-Type字段来确定MIME类型,并根据其安全策略来决定是否允许网页读取该响应。如果MIME类型不符合安全标准,浏览器就会拦截该响应,防止恶意脚本的执行和数据泄露。

此外,CORB还通过引入新的响应头来增强安全性。例如,通过设置Content-Type为"application/octet-stream",浏览器会将该响应视为二进制数据而不是HTML文档,从而进一步阻止对敏感信息的读取。

哪些类型的内容受 CORB 保护?

  1. 非文本格式:如图像(JPEG、PNG 等)、音频、视频和其他二进制格式。虽然这些格式本身通常不是跨站读取攻击的目标,但CORB 的机制可能也会覆盖它们,以防止任何潜在的滥用。

  2. 不常见的文本格式:这些可能包括某些特定的 MIME 类型,它们不是通常用于网页显示的文本类型(例如,非标准的文本编码或旧的、较少使用的格式)。

  3. JavaScript 代码:虽然 JavaScript 通常用于网页交互,但恶意网站可能会尝试利用跨域请求来读取其他网站上的 JavaScript 代码,以获取敏感信息或执行其他恶意操作。因此,JavaScript 响应也可能受到 CORB 的保护。

  4. 不安全的或未知的内容类型:浏览器可能无法识别或处理某些内容类型,或者这些类型可能具有潜在的安全风险。在这种情况下,CORB 可能会采取预防措施,阻止网页读取这些响应

CORB 的具体实现和受保护的内容类型可能因浏览器而异,并且可能随着浏览器版本的更新而发生变化。为了确保Web应用程序的安全性和兼容性,应该了解并遵循最新的浏览器安全最佳实践,并避免依赖可能受到CORB或其他安全机制影响的行为。

总结

CORB(Cross-Origin Read Blocking)是一种安全机制,用于阻止跨域读取攻击,保护Web应用程序免受恶意网站的攻击。它由Google提出并实现。CORB的工作原理是,当浏览器发起跨域请求时,它会在收到响应之前先检查响应的内容类型。如果响应的内容类型不是被视为安全的类型(如HTML、XML、JSON等),浏览器就会阻止网页读取该响应的内容。

CORB的发生时机主要有两种情况:

  1. 当浏览器试图使用XMLHttpRequest或Fetch等API读取跨域资源时,如果跨域资源的MIME类型为text/html、application/xml或者是application/json等,同时该资源返回的响应头缺少Access-Control-Allow-Origin头或者不被允许跨域,浏览器就会阻止该跨域请求并报错;
  2. 如果当前页面通过iframe、script等标签引用了跨域资源,并且该资源的MIME类型为上述可能包含敏感信息的类型,同时响应头不满足跨域条件,浏览器同样会触发CORB机制阻止跨域资源的读取。

如需更详细的信息,可以参考 https://chromium.googlesource.com/chromium/src/+/refs/heads/main/services/network/cross_origin_read_blocking_explainer.md

  • 25
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Cross-Origin Read Blocking (CORB) 是一项安全功能,用于阻止网页从不同源(即不同域名)读取敏感数据。如果 CORB 检测到跨域请求的数据属于敏感类型,它将阻止该请求并返回错误信息。 ### 回答2: 首先,我们需要了解同源策略(Same Origin Policy)。同源策略是一种安全机制,限制了网站在脚本中如何操作来自不同来源的文档、窗口或框架。简而言之,如果两个页面拥有协议、主机和端口号完全相同,那么它们就是同源的。 而当请求跨域资源时,服务器必须在响应中设置特定的HTTP头——CORS(Cross-Origin Resource Sharing)授权。这个头告诉浏览器是否允许一个页面访问来自不同源服务器的特定资源。如果服务器没有设置这个HTTP头,浏览器默认会阻止请求。 那么,什么是CORB呢?CORB是Chrome浏览器所实现的另一种安全机制,其目的在于防止来自不同源服务器的恶意代码,以及保护隐私信息。它会拦截并阻止一部分潜在的XSS攻击,并使渲染过程更高效。 当我们在Chrome中请求跨域资源时,如果返回的内容被Chrome识别为危险的MIME类型,并且服务器没有设置CORS授权的HTTP头,就会出现“Cross-Origin Read BlockingCORB)Blocked Cross-Origin Response”的错误。这个错误意味着浏览器无法读取来自另一个域的响应,因此,浏览器会阻止访问这些跨域资源。 所以,解决这个错误的方法是服务器需要设置CORS授权的HTTP头。如果服务器无法设置这个HTTP头,我们就不能直接从JS中访问这些跨域资源了,而需要采取其它的处理方式,比如通过代理等。 ### 回答3: Cross-origin read blocking (CORB)是一种浏览器安全机制,旨在防止跨站脚本攻击和信息泄漏,防止恶意网站通过注入恶意脚本来窃取用户敏感信息。在实际应用中,由于站点间跨域问题,有可能会经常遭遇到“cross-origin read blocking (corb) blocked cross-origin response”的提示。 “cross-origin read blocking (corb) blocked cross-origin response”提示意味着当前页面试图读取另一个域名下的资源,然而在跨域请求中,目标站点返回了一个被拦截的响应。这通常意味着当前页面试图从一个不受信任的域名下请求资源。浏览器会拦截这个跨域请求,防止页面从其他站点获取潜在的危险信息。 要解决“cross-origin read blocking (corb) blocked cross-origin response”问题,有几种方法: 1. 通过设置CORS(跨域资源共享)来允许站点间跨域访问。这需要在目标站点上设置一些标头,例如“Access-Control-Allow-Origin”。 2. 可以考虑使用JSONP(JSON with padding)方法,这是一种跨域请求的方法,它可以通过动态地在页面上添加一个脚本来请求数据。 3. 使用代理服务器可以将跨域请求转发到另一个域名下,以避免被拦截。 总体而言,“cross-origin read blocking (corb) blocked cross-origin response”提示意味着当前页面试图从一个不受信任的站点获取潜在的危险信息。为了保障用户安全和信息安全,浏览器会阻止这样的跨域请求。开发者可以通过设置CORS或使用JSONP等方法来解决这一问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值