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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/5446.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache POI 在java中处理excel

介绍: Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是&#xff0c;我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。 一般情况下&#xff0c;POI 都是用于操作 Excel 文件。 如何使用: 1.maven坐标引入 <depend…

Aker(安碁科技)晶振产品应用和选型

一、石英晶体振荡器简介 在电子电路系统中&#xff0c;特定的动作需要严格按照一定的顺序进行&#xff0c;以确保数据被正确处理和操作&#xff0c;时钟信号就成了系统工作的重要引导者。而且在多模块复杂电路系统中&#xff0c;为了确保不同功能模块能协调一致地工作&#xf…

【unity】(1)场景

Unity的场景&#xff08;Scene&#xff09;是构建游戏中各种环境和级别的基础。一个场景可以包含游戏中的所有对象&#xff0c;如角色、道具、地形等。 创建和管理场景 创建新场景&#xff1a; 在Unity编辑器中&#xff0c;选择File > New Scene&#xff0c;或者使用快捷键…

你用过最好用的AI工具有哪些

一&#xff1a;介绍 随着科技的飞速发展&#xff0c;AI技术已经深入到我们生活的每一个角落&#xff0c;为我们提供了前所未有的便利和可能性。在众多AI工具中&#xff0c;有几种特别受到人们的喜爱&#xff0c;并且在各自的领域中产生了深远的影响。 1、AI绘画工具 改图鸭AI绘…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(七)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 14 节&#xff09; P14《13.ArkUI组件-自定义组件》 将可变部分封装成组件的成员变量&#xff1a; 1、首先给标题添加两个图标&am…

用Docker 创建并运行一个MySQL容器

可以在DockerHub官网上荡:mysql - Official Image | Docker Hub 指令是:docker pull mysql; 因为文件比较大可能时间比较长&#xff0c;我是跟着黑马的课走的 课程提供的有文件&#xff0c;我就用已有的资源了。 在tmp目录里放入mysql.tar包 然后cd进去 输入指令:docker lo…

上位机开发PyQt(五)【Qt Designer】

PyQt5提供了一个可视化图形工具Qt Designer&#xff0c;文件名为designer.exe。如果在电脑上找不到&#xff0c;可以用如下命令进行安装&#xff1a; pip install PyQt5-tools 安装完毕后&#xff0c;可在如下目录找到此工具软件&#xff1a; %LOCALAPPDATA%\Programs\Python\…

设计模式之监听器模式ListenerPattern(三)

一、介绍 监听器模式是一种软件设计模式&#xff0c;在对象的状态发生改变时&#xff0c;允许依赖它的其他对象获得通知。在Java中&#xff0c;可以使用接口和回调机制来实现监听器模式。 二、代码实例 1、事件Event类 package com.xu.demo.listener;// 事件类 public class…

前端开发框架uni-app

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl uni-app概述 uni-app起源于跨平台应用开发的需求增长。在过去&#xff0c;为不同的平台&#xff08;如iOS、Android、各种小程序等&#xff09;开发应用需要分别编写和维护…

C++必修:类与对象(二)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C学习 贝蒂的主页&#xff1a;Betty’s blog 1. 构造函数 1.1. 定义 构造函数是一个特殊的成员函数&#xff0c;名字与类名相…

【GitHub】github学生认证,在vscode中使用copilot的教程

github学生认证并使用copilot教程 写在最前面一.注册github账号1.1、注册1.2、完善你的profile 二、Github 学生认证注意事项&#xff1a;不完善的说明 三、Copilot四、在 Visual Studio Code 中安装 GitHub Copilot 扩展4.1 安装 Copilot 插件4.2 配置 Copilot 插件&#xff0…

【C++】学习笔记——string_2

文章目录 六、string类2. 反向迭代器const迭代器 string类对象的容量操作&#xff08;补&#xff09;size() 3. string类的元素访问4. string类的修改 未完待续 结合文档食用~ 六、string类 2. 反向迭代器 一般来说&#xff0c;迭代器都是正向的遍历容器&#xff0c;虽然可以…

开源协议与商业许可:选择与遵循

文章目录 一、开源协议1.1 MIT许可证&#xff08;MIT License&#xff09;1.2 BSD许可证&#xff08;BSD License&#xff09;1.3 Apache许可证 2.0&#xff08;Apache License 2.0&#xff09;1.4 GNU宽松通用公共许可证&#xff08;GNU Lesser General Public License&#x…

Python如何实现抽象工厂模式

抽象工厂模式简介 在软件工程中&#xff0c;抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09;是一种设计模式&#xff0c;用于在运行时创建一组相关或相互依赖的对象&#xff0c;而不需要指定它们的具体类。这种模式非常适合用于管理系统中对象的创建&#xff0…

# 从浅入深 学习 SpringCloud 微服务架构(七)Hystrix(3)

从浅入深 学习 SpringCloud 微服务架构&#xff08;七&#xff09;Hystrix&#xff08;3&#xff09; 一、hystrix&#xff1a;通过 Actuator 获取 hystrix 的监控数据 1、Hystrix 的监控平台介绍&#xff1a; 1&#xff09;Hystrix 除了实现容错功能&#xff0c;Hystrix 还…

spring boot运行过程中动态加载Controller

1.被加载的jar代码 package com.dl;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication public class App {public static void main(String[] args) {SpringApplication.run(A…

【MySQL精炼宝库】深度解析索引 | 事务

目录 一、索引 1.1 索引(index)概念&#xff1a; 1.2 索引的作用&#xff1a; 1.3 索引的缺点&#xff1a; 1.4 索引的使用场景&#xff1a; 1.5 索引的使用&#xff1a; 1.6 面试题:索引底层的数据结构&#xff08;核心内容&#xff09;&#xff1a; 1.7 索引列查询(主…

centos学习-精通ls-Linux目录管理的关键命令

精通ls-Linux目录管理的关键命令 一、引言 在Unix和Linux系统中&#xff0c;ls命令是用户最常用的命令之一。它用于列出目录的内容&#xff0c;并提供关于文件和目录的详细信息。本文将详细介绍ls命令的用法、选项、参数以及与其他命令的结合使用。 二、ls命令的基本用法 列…

Laravel breeze vs Jetstream

Introduction Laravel在应用程序中提供了几种身份验证选项&#xff0c;为我们的身份验证层提供了一个健壮而现代的脚手架。Laravel入门工具包就是其中之一&#xff0c;它由breeze和jetstream组成。 Laravel Breeze是快速运行程序的绝佳选择&#xff0c;jetstream提供双因素认…

启发式搜索算法1 - 最佳优先搜索算法

启发式搜索算法有什么优势&#xff1f; 对于复杂问题的盲目搜索&#xff0c;常用广度优先搜索和深度优先搜索这两种盲目搜索算法&#xff0c;极大极小值和Alpha-beta剪枝算法是在盲目搜索过程中&#xff0c;通过剪枝避开一些不可能的结果&#xff0c;从而提高效率。 如果搜索…