簡介
沙箱模型技術是瀏覽器和其他應用程序中保護安全的一種組件關系設計模式,最初發明人為GreenBorder公司。2007年5月,谷歌公司收購了該公司,也將此項專利應用於chrome瀏覽器的研發中。
背景
一般而言,對於網絡上的網頁中的JavaScript代碼和插件都是不受信的(除非是經過認證的網站),特別是一些故意設計侵入瀏覽器運行的主機代碼更是非常危險,通過一些手段或者瀏覽器中的漏洞,這些代碼可能獲取了主機的管理權限,這對主機系統來說是非常危險的,所以保證網頁本身之外,還需要保證瀏覽器和瀏覽器所在的系統不存在危險。
對於網絡上的網頁,瀏覽器認為他們是不安全的,因為網頁總是存在各種可能性,也許是無意的或有意的攻擊。如果有一種機制,將網頁的運行限制在一個特定的環境中,也就是一個沙箱中,使它只能訪問有限的功能。那么,即使網頁工作的渲染引擎被攻擊,它也不能夠獲取渲染引擎工作的主機系統中的任何權限,這一思想就是沙箱模型。
原理
在Windows系統中,瀏覽器結合了DEP、ASLR、SafeSEH等操作系統提供的保護技術,用於對抗內存攻擊。與此同時,瀏覽器開發商還發展出多進程架構,使得安全性又有了很大的提高。(注:由於沙箱模型嚴重依賴操作系統提供的技術,而不同的操作系統提供的安全技術是不一樣的,這就意味着不同操作系統上的實現是不一致的。)
Google Chrome是第一個采取多進程架構的瀏覽器。Chrome的主要進程氛圍:瀏覽器進程,渲染進程,插件進程、拓展進程。插件進程如flash、pdf等於瀏覽器進程嚴格隔離,因此不會互相影響。
Chrome的渲染引擎由SandBox隔離,網頁代碼要與瀏覽器內核進程通信、與操作系統通信都需要通過IPC channel,在其中會進行一些安全檢查。

受限環境只能被某些或者很少的系統調用而且不能直接訪問用戶數據。
以下是Chrome實現的一個相對完整的SandBox:
沙箱模型工作的基本單位就是進程。每一個進程對應一個沙箱。相對於單進程瀏覽器,在發生崩潰時,多進程瀏覽器只會崩潰當前的Tab頁,而單進程瀏覽器則會崩潰整個瀏覽器進程。這對於用戶體驗式很大的提升。
參考資料:
《白帽子講Web安全》 —— 吳翰清