黑客会在网页中插入一段恶意代码,然后利用浏览器漏洞来执行任意代码,这就叫做 “挂马”。它是浏览器所面对的一种主要的威胁。

浏览器为了应对 “挂马” 威胁,从单进程架构转变为多进程架构。浏览器的多进程架构,会分开浏览器的各个功能模块。这样当一个浏览器进程崩溃时,也不会影响到其他的浏览器进程。

Chrome 浏览器是第一个采用多进程(Multiprocessing)架构的浏览器:这个架构能容许多个程序同时运行而互不影响,每个网页标签都是独立于窗口程序而存在,当资源过高或崩溃时,不会因为一个停顿而整个程序当掉。这样做,可以极大地提升用户体验。

Chrome 浏览器包含浏览器进程、渲染进程、插件进程以及扩展进程。插件进程,比如 flash、java 等进程会与浏览器进程严格隔离:

渲染进程被沙箱(Sandbox)隔离,网页 web 代码内容必须通过 IPC 通道才能与浏览器内核进程通信,通信过程会进行安全的检查。

沙箱设计的目的是为了让不可信的代码运行在一定的环境中,从而限制这些代码访问隔离区之外的资源。如果因为某种原因,确实需要访问隔离区外的资源,那么就必须通过的指定的通道,这些通道会进行严格的安全检查,来判断请求的合法性。通道会采取默认拒绝的策略,一般采用封装 API 的方式来实现。

Chrome 中的每一个标签页都是一个沙箱(sandbox)。为了防止“恶意软件破坏用户系统”或“利用标签页影响其他标签页”。沙箱遵循最小权限原则,每个动作的权限都会被限制,仅能运算而无法写入文件和从敏感区域(即受保护区域)读取文件(如我的文档、桌面)。例如在其中一个标签页运作的恶意软件,将无法窃取信用卡号码、干扰鼠标运作,或告诉系统在启动时运行某个程序,并且恶意软件会在标签页关闭时立即中止。

04-06 14:54