浏览器沙箱(sandBox)到底是什么?

什么是沙箱

操作系统层面的沙盒的含义就是操作系统对进程的可访问的内存地址所做的限制限制进程可访问的内存在其被分配的内存地址区间内,而不允许操作其他的内存地址,从而提供安全层面的防护。

到浏览器层面,本质原理没多大变化,实践层面可能会根据浏览器环境有所变化,比如限制脚本操作本页面之外的其他页面的DOM,限制访问非同源文档,限制向非同源服务器发送ajax等等,目的依然是安全。

以chromium为例。chromium是多进程架构,浏览器前端界面由browser进程管理,各个web page的tab属于renderer进程管理。chromium的sandbox是将renderer进程作为防护对象browser进程会给每个renderer进程分配资源,但这些renderer进程只能访问被分配的资源,不能访问未被分配的资源。这里资源的概念比较广泛,具体到可访问的DOM(对应内存中的对象),或抽象到origin scope等。实现层面的话,可以类比Linux下文件系统的权限位,浏览器会对每个web page实现对应的权限位,w3c HTML规范里 [Sandbox](https://www.w3.org/WebPlatform/docs/html51/browsers.html#sandboxing) 有相关内容。

沙箱模型技术是浏览器和其他应用程序中保护安全的一种组件关系设计模式,最初发明人为GreenBorder公司。2007年5月,谷歌公司收购了该公司,也将此项专利应用于chrome浏览器的研发中。chrome对沙箱模型的解释是:

The sandbox is used to restrict sub-processes (renderer, plugin, GPU, etc) from directly accessing system resources. This helps to protect the user from untrusted and potentially malicious Web content.

翻译为中文是:

沙盒用于限制子进程(渲染器、插件、GPU等)直接访问系统资源。这有助于保护用户免受不受信任和潜在恶意Web内容的攻击。

背景

一般而言,对于网络上的网页中的JavaScript代码和插件都是不受信的(除非是经过认证的网站),特别是一些故意设计侵入浏览器运行的主机代码更是非常危险,通过一些手段或者浏览器中的漏洞,这些代码可能获取了主机的管理权限,这对主机系统来说是非常危险的,所以保证网页本身之外,还需要保证浏览器和浏览器所在的系统不存在危险。

对于网络上的网页,浏览器认为他们是不安全的,因为网页总是存在各种可能性,也许是无意的或有意的攻击。如果有一种机制,将网页的运行限制在一个特定的环境中,也就是一个沙箱中,使它只能访问有限的功能。那么,即使网页工作的渲染引擎被攻击,它也不能够获取渲染引擎工作的主机系统中的任何权限,这一思想就是沙箱模型。

原理

“沙盒”技术与主动防御技术原理截然不同。主动防御是发现程序有可疑行为时立即拦截并终止运行“沙盒”技术则是发现可疑行为后让程序继续运行,当发现的确是病毒时才会终止。“沙盒”技术的实践运用流程是:让疑似病毒文件的可疑行为在虚拟的“沙盒”里充分表演,“沙盒”会记下它的每一个动作;当疑似病毒充分暴露了其病毒属性后,“沙盒”就会执行“回滚”机制:将病毒的痕迹和动作抹去,恢复系统到正常状态。

如果您还不懂,那说的再简单一些。想象一下,在一个装满了平整细沙的盒子里,我们可以尽情随意地在上面作画、涂写,无论画的好坏,最后轻轻一抹,沙盒又回到了原来的平整状态。沙盒的魅力就在于他允许你出错,还可以给你改正的机会

实现  

在Windows系统中,浏览器结合了DEP、ASLR、SafeSEH等操作系统提供的保护技术,用于对抗内存攻击。与此同时,浏览器开发商还发展出多进程架构,使得安全性又有了很大的提高。(注:由于沙箱模型严重依赖操作系统提供的技术,而不同的操作系统提供的安全技术是不一样的,这就意味着不同操作系统上的实现是不一致的。)

Google Chrome是第一个采取多进程架构的浏览器。Chrome的主要进程氛围:浏览器进程,渲染进程,插件进程、拓展进程插件进程如flash、pdf等于浏览器进程严格隔离,因此不会互相影响。

Chrome的渲染引擎由SandBox隔离,网页代码要与浏览器内核进程通信、与操作系统通信都需要通过IPC channel,在其中会进行一些安全检查

采用SandBox技术,可以让网页的渲染在一个独立的Renderer进程中进行,并且该进程是受限的,如下图:

受限环境只能被某些或者很少的系统调用而且不能直接访问用户数据。

以下是Chrome实现的一个相对完整的SandBox:

沙箱模型工作的基本单位就是进程。每一个进程对应一个沙箱。相对于单进程浏览器,在发生崩溃时,多进程浏览器只会崩溃当前的Tab页,而单进程浏览器则会崩溃整个浏览器进程。这对于用户体验式很大的提升。

转自:https://www.cnblogs.com/slly/p/6639173.html

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值