126

我已阅读Wikipedia 文章,但我不确定它的含义,以及它与版本控制的相似程度。

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

4

6 回答 6

277

在此处输入图像描述

沙坑或沙箱是一个低而宽的容器或浅洼地,里面装满了沙子,孩子们可以在其中玩耍。许多有孩子的房主在他们的后院建造沙坑,因为与许多游乐设备不同,沙坑建造起来既简单又便宜。“沙坑”也可以指露天矿砂矿。

好吧,软件沙盒与为孩子玩耍而构建的沙盒没有什么不同。通过为孩子提供沙箱,我们模拟了真实游乐场的环境(换句话说,an isolated environment),但对孩子可以做的事情有限制。因为我们不希望孩子被感染,或者我们不希望他给别人带来麻烦。:) 原因是什么,我们只是想限制孩子可以做什么Security Reasons

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

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

下载一个名为sandboxie的程序,您可以亲自体验沙盒。使用该程序,您可以在受控环境中运行任何程序。

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

在此处输入图像描述

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

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

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

于 2010-01-24T06:51:26.263 回答
32

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

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

于 2010-01-24T06:31:23.687 回答
15

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

例如, Paypal提供了这样一个沙盒环境。

于 2010-01-24T06:41:25.643 回答
6

对于软件开发中的“沙盒”来说,就是在不干扰他人的情况下,孤立地进行开发。

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

于 2010-01-24T06:38:16.963 回答
0

更多时候我们指的是其他沙箱


无论如何,沙盒通常意味着一个孤立的环境。您可以在沙箱中做任何您喜欢的事情,但其效果不会传播到沙箱之外。例如,在软件开发中,这意味着您不需要/usr/lib为了测试您的库等而弄乱一些东西。

于 2010-01-24T06:29:30.983 回答
0

沙盒是一个隔离的测试环境,使用户能够运行程序或执行文件,而不会影响他们运行的应用程序、系统或平台。软件开发人员使用沙箱来测试新的编程代码。尤其是网络安全专业人员使用沙盒来测试潜在的恶意软件。如果没有沙盒,应用程序或其他系统进程可以无限制地访问网络上的所有用户数据和系统资源。

沙盒还用于安全地执行恶意代码,以避免损害运行代码的设备、网络或其他连接的设备。使用沙箱检测恶意软件可针对安全威胁提供额外的保护层,例如隐形攻击和利用零日漏洞的攻击。

主要文章在这里

于 2021-02-02T05:49:09.777 回答