瀏覽器沙箱(sandBox)到底是什麼?

希望能通俗地講一下其概念與作用


「沙盒」技術與主動防禦技術原理截然不同。主動防禦是發現程序有可疑行為時立即攔截並終止運行。「沙盒」技術則是發現可疑行為後讓程序繼續運行,當發現的確是病毒時才會終止。「沙盒」技術的實踐運用流程是:讓疑似病毒文件的可疑行為在虛擬的「沙盒」里充分表演,「沙盒」會記下它的每一個動作;當疑似病毒充分暴露了其病毒屬性後,「沙盒」就會執行「回滾」機制:將病毒的痕迹和動作抹去,恢復系統到正常狀態。

如果您還不懂,那說的再簡單一些。想像一下,在一個裝滿了平整細沙的盒子里,我們可以盡情隨意地在上面作畫、塗寫,無論畫的好壞,最後輕輕一抹,沙盒又回到了原來的平整狀態。沙盒的魅力就在於他允許你出錯,還可以給你改正的機會。

參考資料:

http://www.cnblogs.com/hanhang/archive/2011/10/06/2199974.html


操作系統層面的沙盒的含義就是操作系統對進程的可訪問的內存地址所做的限制,限制進程可訪問的內存在其被分配的內存地址區間內,而不允許操作其他的內存地址,從而提供安全層面的防護。

到瀏覽器層面,本質原理沒多大變化,實踐層面可能會根據瀏覽器環境有所變化,比如限制腳本操作本頁面之外的其他頁面的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) 有相關內容。


推薦閱讀:

Web前端開發比較好的技術類資源網站有哪些?
知乎為什麼不把網頁背景改成潤眼色?亮白亮白的看時間長了不舒服!
h5頁面製作,設計多大的尺寸,怎麼和前端適配,實現設計的視覺稿效果?
計算機專業的學生如何系統學習前端技術?
豆瓣張克軍是怎麼出名的?

TAG:GoogleChrome | 前端開發 | 網頁瀏覽器 | 安全沙箱 |