什么是沙盒?

问题描述 投票:107回答:5

我已经阅读了Wikipedia article,但我不确定它的意思,以及它与版本控制的相似之处。

如果有人能用非常简单的术语解释什么是沙盒,那将会很有帮助。

sandbox
5个回答
246
投票

sandpit or sandbox是一个低矮的宽容器或浅沙洼,里面装满了儿童可以玩耍的沙子。许多带孩子的房主在他们的后院建造沙坑,因为与许多游乐场设备不同,它们可以容易且廉价地建造。 “沙坑”也可以表示露天砂矿。

嗯,软件沙箱与为孩子玩的沙箱没什么不同。通过为孩子提供沙箱,我们模拟真实游戏场地的环境(换句话说,isolated environment),但限制孩子可以做什么。因为我们不希望孩子被感染,或者我们不希望他给别人带来麻烦。 :)所以原因是什么,我们只想限制孩子可以为Security Reasons做些什么。

现在来到我们的软件沙箱,我们让任何软件(子)执行(播放),但对它(他)可以做什么有一些限制。我们可以对执行软件的功能感到安全可靠。

您已经看过并使用过防病毒软件。对?它也是一种沙箱。它限制任何程序可以做什么。当检测到恶意活动时,它会停止并通知用户“此应用程序正在尝试访问某些资源。是否要允许?”。

下载名为sandboxie的程序,您可以获得沙箱的实践经验。使用此程序,您可以在受控环境中运行任何程序。

红色箭头表示从正在运行的程序流入计算机的更改。标记为“硬盘”(无沙箱)的框显示正常运行的程序所做的更改。标有硬盘(带有沙盒)的框显示了在Sandboxie下运行的程序所做的更改。动画说明Sandboxie能够拦截更改并将其隔离在沙箱中,并将其描绘为黄色矩形。它还说明了将更改分组在一起可以轻松地一次删除所有更改。

现在从程序员的角度来看,sandbox限制了允许应用程序使用的API。在防病毒示例中,我们限制了系统调用(操作系统API)。

另一个例子是在线编码竞技场,如topcoder。您提交代码(程序)但它在服务器上运行。对于服务器的safety,他们应该限制程序API的访问级别。换句话说,他们需要创建一个沙箱并在其中运行您的程序。

如果您有适当的sandox,您甚至可以运行受病毒感染的文件并停止病毒的所有恶意活动,并亲自查看它正在尝试做什么。事实上,这将是Antivirus研究员的第一步。


27
投票

沙盒的这个定义基本上意味着拥有测试环境(开发人员集成,质量保证,阶段等)。这些测试环境模仿生产,但它们不共享任何生产资源。它们具有完全独立的服务器,队列,数据库和其他资源。

更常见的是,我看到沙盒指的是虚拟机之类的东西 - 隔离机器上的一些正在运行的代码,这样它就不会影响基本系统。


12
投票

举一个具体的例子:假设您有一个处理汇款的应用程序。在生产环境中,真钱交换。在沙盒环境中,一切都运行完全相同,但钱是虚拟的。它用于测试目的。

例如,Paypal提供这样的沙盒环境。


5
投票

对于软件开发中的“沙盒”,它意味着开发而不会以孤立的方式打扰其他人。

它与版本控制不相似。但是一些版本控制(作为分支)方法可以帮助制作沙箱。


0
投票

更常见的是我们提到the other sandbox


无论如何,沙箱通常意味着孤立的环境。您可以在沙箱中执行任何您喜欢的操作,但其效果不会传播到沙箱之外。例如,在软件开发中,这意味着您不需要在/usr/lib中混淆测试库等的东西。

© www.soinside.com 2019 - 2024. All rights reserved.