前端开发浏览器技术秘籍 (三)浏览器的沙箱机制

前端开发浏览器技术秘籍 (三)浏览器的沙箱机制
最新回答
呆萌没商量

2026-04-27 22:31:25

很多人都知道所谓的“沙盒”(或沙箱)概念,这实际上是一种安全机制。它为正在运行的程序提供了一个完全隔离的环境,以避免对操作系统造成危害。沙盒通常会对程序可访问的资源进行严格限制,包括磁盘和内存空间。这也属于虚拟化的一种方法,类似于通过虚拟机建立电脑。

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

一、什么是沙箱(Sandbox)

沙箱是一种隔离对象/线程/进程的机制,它控制浏览器访问系统资源的权限,以达到保护用户系统免受网页恶意软件侵害、保护用户系统的输入事件(键盘/鼠标)不被监视、保护用户系统中的文件不被窃取等目的。最初的浏览器沙箱是基于Hook实现的,而Chrome沙箱则是利用操作系统提供的一些安全机制实现的。

沙箱通常在虚拟机(VM)中实现,例如Java的虚拟机JVM、JavaScript的虚拟机V8引擎、Android中的虚拟机Dalvik/ART,以及以太坊的虚拟机EVM等等。具体的实现方式各有不同,本文将重点分析JVM和EVM的沙箱机制实现。

二、为什么需要沙箱

默认情况下,一个应用程序可以访问机器上的所有资源,如CPU、内存、文件系统、网络等。但这是不安全的,如果随意操作资源,可能会破坏其他应用程序正在使用的资源或造成数据泄露。为了解决这个问题,通常有两种解决方案:

(1) 为程序分配一个限定权限的账号:利用操作系统的权限管理机制进行限制

(2) 为程序提供一个受限的运行环境:这就是沙箱机制

三、沙箱原理

因为沙箱模型严重依赖操作系统提供的技术,而不同操作系统提供的安全技术是不一样的,所以不同操作系统上的实现是不一致的。以Chromium为例,它是在进程的粒度下来实现沙箱模型,也就是说需要在沙箱下运行的操作都在一个单独的进程中。因此,使用沙箱模型至少需要两个进程。

代理进程需要负责创建目标进程并为目标进程设置各种安全策略,同时建立IPC连接,接受目标进程的各种请求,因为目标进程不能访问过多资源。

“沙盒”技术与主动防御技术原理截然不同。主动防御是发现程序有可疑行为时立即拦截并终止运行。“沙盒”技术则是发现可疑行为后让程序继续运行,当发现的确是病毒时才会终止。

沙箱其实就是一个硬盘过滤文件驱动,具体来说,就是你把要写的东西写到了硬盘上,但实际上并没有写到硬盘,而是到了一个转存处,读取内容需要判断是沙箱开启之前就存在的内容还是开沙箱之后写入的内容,要分别从不同的地方读取内容,重启之后把转存的地方清零。

文件过滤的驱动编写和加载方法(网上找到的,关键词是bitmap):就是一小块一小块的扇区,bitmap每一位对应磁盘上的一个扇区,N位就有N个扇区,这个位如果为0,就认为这个扇区的数据没有被存储到其他地方,如果为1就是存到了其他地方,写的时候把bitmap置1,读的时候就从bitmap为1的扇区从转存的地方读回来,如果为0就还是从原设备读取数据,重启后bitmap恢复为全0。

四、沙箱安全策略

总结起来就是不能写,不能读,不给看。

五、沙箱安全策略的限制总结

沙箱模型则是利用了Chromium实现的,利用代理进程创建独立的环境让目标进程在其中安全运行。沙箱机制极大地降低了网页中各种破坏操作系统的潜在风险,将网页执行置于一个孤立和受限制的环境中。

附:

1.IPC(Internet Process Connection)是共享“命名管道”的资源,它是为了让进程间通信而开放的命名管道。通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。IPC是NT/2000的一项新功能,它有一个特点,即在同一时间内,两个IP之间只允许建立一个连接。NT/2000在提供了ipc功能的同时,在初次安装系统时还打开了默认共享,即所有的逻辑共享(c,d,e……)和系统目录winnt或windows(admin)共享。所有的这些,微软的初衷都是为了方便管理员的管理,但在有意无意中,导致了系统安全性的降低。