2010-01-24 117 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是一台完整的主机,传统的操作系统可以像在实际硬件上一样启动和运行。客户操作系统运行沙盒,意思是它不能在主机上本地运行,并且只能通过仿真器访问主机资源