2010-01-24 113 views
86

我已閱讀Wikipedia article,但我不確定它的含義,以及它與版本控制有多相似。什麼是沙盒?

如果有人能夠用非常簡單的術語解釋沙箱是什麼,這將會很有幫助。

回答

205

enter image description here

一個sandpit or sandbox是低,寬容器或淺的凹陷裝滿沙子,使兒童可以玩。許多有孩子的房主在他們的後院建造沙坑,因爲與許多操場設備不同,它們可以容易且廉價地構建。 「沙坑」也可以表示露天礦砂礦。

那麼,一個軟件沙箱沒有什麼不同,沙箱是爲孩子玩的。通過給孩子提供一個沙盒,我們可以模擬真實遊戲場地的環境(換句話說,就是一個isolated environment),但限制孩子能做什麼。因爲我們不希望孩子受到感染,或者我們不希望他給別人造成麻煩。 :)原因是什麼,我們只是想限制孩子能爲Security Reasons做些什麼。

現在來到我們的軟件沙箱,我們讓任何軟件(孩子)執行(播放),但對他(他)能做的事情有一些限制。我們可以感受到安全&安全關於執行的軟件可以做什麼。

您見證了&使用防毒軟件。對?它也是一種沙箱。它限制了任何程序可以執行的操作。當檢測到惡意活動時,它會停止並通知用戶「此應用程序試圖訪問so so & so resources。Do do want to allow?」。

下載名爲sandboxie的程序,您可以獲得有關沙盒的體驗。使用此程序,您可以在受控環境中運行任何程序。

紅色箭頭表示從正在運行的程序流入您的計算機的變化。標有硬盤(無沙箱)的框顯示正常運行的程序所做的更改。標有硬盤(帶有沙箱)的方框顯示了在Sandboxie下運行的程序的更改。該動畫表明,Sandboxie能夠攔截這些變化並將其隔離在一個沙箱內,如黃色矩形所示。它還說明將更改分組在一起可以輕鬆一次刪除所有更改。

enter image description here

現在,但從程序員的角度來看,沙箱限制被允許應用程序的API。在防病毒示例中,我們限制了系統調用(操作系統API)。

另一個例子是在線編碼競技場,如topcoder。您提交了一個代碼(程序),但它在服務器上運行。對於服務器的safety,它們應該限制程序的API訪問級別。換句話說,他們需要創建一個沙盒並在其中運行你的程序。

如果你有一個適當的sandox,你甚至可以運行一個受病毒感染的文件,並停止病毒的所有惡意活動,並親自看看它正在嘗試做什麼。事實上,這將是防病毒研究人員的第一步。

+14

感謝@克拉克神奇的解釋。 – Lazer 2010-01-25 08:53:26

+3

@ claws:謝謝你的解釋。 – Dipak 2014-07-02 04:57:38

+3

這是我見過的主題的最佳解釋 最好的部分是防病毒研究員, – Milad 2014-10-16 15:54:23

-1

更多的時候我們可以參考the other sandbox


在反正沙箱常常意味着一個隔離環境。你可以在沙箱中做任何你喜歡的事情,但是它的效果不會在沙箱外傳播。例如,在軟件開發中,這意味着你不需要搗亂/usr/lib中的東西來測試你的庫等。

+2

這不是一個真正的問題答案...... – Francis 2010-01-24 06:31:05

20

這個沙盒定義基本上意味着擁有測試環境(開發人員集成,質量保證,舞臺等) )。這些測試環境模仿生產,但他們不共享任何生產資源。他們有完全獨立的服務器,隊列,數據庫和其他資源。

更常見的是,我見過的沙箱指的是像虛擬機這樣的東西 - 隔離機器上的一些運行代碼,以便它不會影響基本系統。

+0

好吧,基本上沙箱就是測試在一個受控環境中使用軟件。對? 順便說一句,爲什麼叫'沙箱'? – Lazer 2010-01-24 06:35:32

+0

>>爲什麼叫'沙盒' @eSKay是因爲人們在軟件/硬件上玩沙盒中的孩子(http://www.thefreedictionary.com/sandbox- definition#3)。 – Darmen 2010-01-24 06:41:07

4

對於軟件開發中的「沙箱」,它意味着開發時不會以孤立的方式打擾其他人。

它與版本控制不相似。但是一些版本控制(作爲分支)方法可以幫助製作沙盒。

9

舉一個具體的例子:假設你有一個處理匯款的應用程序。在生產環境中,真錢交換。在沙箱環境中,一切運行完全一樣,但錢是虛擬的。它用於測試目的。例如,

Paypal提供了這樣的沙箱環境。

0

Google NaCl可能是一個很好的例子,你可以在那裏找到很多很好的例子和解釋。

1

虛擬機是sendbox的最好例子,VM是一臺完整的主機,傳統的操作系統可以像在實際硬件上一樣啓動和運行。客戶操作系統運行沙盒,意思是它不能在主機上本地運行,並且只能通過仿真器訪問主機資源