天天看點

浏覽器沙盒是什麼

是什麼

沙盒(sandbox),另稱沙箱,是一種按照安全政策限制程式行為的執行環境。“沙盒”技術的實踐運用流程是:讓疑似病毒檔案的可疑行為在虛拟的“沙盒”裡充分運作,“沙盒”會記下它的每一個動作;當疑似病毒充分暴露了其病毒屬性後,“沙盒”就會執行“復原”機制:将病毒的痕迹和動作抹去,恢複系統到正常狀态。

ps:sandbox并不是sandboxie,sandboxie是一種專業沙盒軟體。

安全政策

1. 不能運作任何本地的的可執行程式。

2. 不能從本地計算機檔案系統中讀取任何資訊,也不能往本地計算機檔案系統中寫入任何資訊。

3. 不能檢視除java版本資訊和少數幾個無害的作業系統詳細資訊外的任何有關本地計算機的資訊。特别是,在沙箱中的代碼不能檢視使用者名、e-mail位址等資訊。

4. 遠端加載的程式不能與除下載下傳程式所在的伺服器之外的任何主機通信,這個伺服器被稱為源主機(originating host)。這條規則通常稱為“遠端代碼隻能與家人通話”這條規則将會確定使用者不會被代碼探查到内部網絡資源(在java se 6 中,java web start 應用程式可以與其他網絡連接配接,但必須得到使用者的同意)。

簡單說就是不能寫,不能讀,不給看。

針對什麼

以chrome為例,chrome采用的是多程序結構,程序類型主要有以下幾種:

1. 主程序:負責所有資源管理、系統互動,前者包括bookmark、cookie、history管理等;後者包括螢幕繪制、處理keyboard/mouse輸入、internet連接配接等。(不在chrome的sandbox中運作。)

2. web渲染程序:負責html解析、javascript執行、image decoding、頁面布局等所有和網頁相關的任務。所有的此類程序都強制在sandbox中運作。和使用者、系統的聯系不直接進行(也無法直接進行),而是通過ipc(程序間通信)向主程序發送請求。

3. plugin程序:每個plugin對應一個此類程序,動态地建立、銷毀。目前的plugin大都需要直接作業系統資源,比如flash plugin會打開攝像頭、下載下傳臨時檔案到硬碟等,是以plugin程序不在sandbox中運作。

4. extension程序:一種特殊的web渲染程序。

ps:extension本身可以算是網頁,安裝了後是運作在沙盒裡面的,但是點選擴充按鈕後可能會啟動額外的程序,這時候所進行的操作就不一定在沙箱内了。

總結起來就是隻有和網頁相關的任務(渲染程序)運作在chrome的沙盒中。chrome的沙盒是依賴作業系統本身提供的機制實作,根據作業系統本身提供了相關的api,限制程序的權限,比如讓程序無法通路任何檔案、無法獲得使用者輸入、無法hook其他程序、無法建立子程序等,chrome的sandbox最大化的利用了這些限制。

限制:

1. 它主要防護惡意代碼對系統的破壞,對其它類型的安全問題辦法不多。比如:惡意代碼可以從主程序獲得所有的cookie,并通過主程序發送出去。

2. 如果作業系統api本身存在漏洞而被攻破,chrome的sandbox也自然被穿。

3. plugin程序不受sandbox保護,是以利用plugin漏洞的惡意代碼在chrome上都能發作。

ps:該文隻是做一個筆記,隻學習,如果有誤,請指正。

轉載:http://www.cnblogs.com/lovesong/p/5087423.html