什么是沙盒技术?

129

我读过 维基百科文章,但我并不确定它的意思,以及它与版本控制有多相似。

如果有人能用简单易懂的语言解释沙盒技术是什么将会很有帮助。

6个回答

282

enter image description here

一个沙坑或沙盒是一个低矮、宽阔的容器或浅坑,填满了沙子,孩子们可以在其中玩耍。许多有孩子的房主在后院建造沙坑,因为与许多游乐场设备相比,它们可以轻松和廉价地建造。"沙坑"也可能表示一个开放的沙矿。

好的,软件沙盒与为孩子玩耍建造的沙盒没有什么不同。通过为孩子提供一个沙盒,我们模拟真实游乐场的环境(换句话说,是一个隔离的环境),但对孩子可以做什么进行限制。因为我们不想让孩子感染或者我们不想让他给别人带来麻烦。:)无论原因是什么,我们只想对孩子可以做什么进行限制,以保证安全性

现在来看看我们的软件沙盒,我们允许任何软件(孩子)执行(玩耍),但对它(他)可以做什么进行一些限制。我们可以感到安全和可靠,关于正在执行的软件可以做什么。

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

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

红色箭头表示来自运行程序的更改流入计算机。标有“硬盘”(无沙盒)的框显示正常运行程序的更改。标有“硬盘”(带沙盒)的框显示在Sandboxie下运行程序的更改。动画说明Sandboxie能够拦截这些更改并将它们隔离在一个黄色矩形的沙盒中。它还说明将这些更改分组使得一次性删除它们变得容易。

enter image description here

现在从程序员的角度来看,沙箱是限制应用程序允许使用的API。在防病毒软件示例中,我们将系统调用(操作系统API)设置限制。
另一个例子是在线编码竞技场,例如topcoder。您提交代码(程序),但它在服务器上运行。为了保证服务器的安全性,他们需要限制程序API的访问级别。换句话说,他们需要创建一个沙箱并在其中运行您的程序。
如果您有一个合适的沙箱,甚至可以运行感染病毒的文件并停止病毒的所有恶意活动,并亲眼看到它试图做什么。事实上,这将是反病毒研究人员的第一步。

1
我为了理解这个概念挣扎了5年以上,现在问题得到了解决,非常感谢。有时候在Stackoverflow上阅读答案比上了5年大学还要好。 - Hakan Fıstık

32

沙盒化的定义基本上是具有测试环境(开发人员集成,质量保证,舞台等)。 这些测试环境模拟生产环境,但不共享任何生产资源。 它们拥有完全分离的服务器,队列,数据库和其他资源。

更常见的是,我看到沙盒化指的是类似虚拟机的东西 - 将一些运行代码隔离在机器上,以便它不能影响基础系统。


2
好的,基本上沙盒测试是在实际使用之前在受控环境中测试软件。对吧?顺便问一下,为什么它被称为“沙盒测试”? - Lazer
为什么叫做“沙盒”?因为人们像孩子一样在沙盒里玩耍软件/硬件。 (http://www.thefreedictionary.com/sandbox - 定义#3) - Darmen Amanbay
那么,沙盒环境和暂存环境有什么区别呢? - Mohammad Jamal Dashtaki

16

举个具体例子:假设您有一个处理货币转账的应用程序。在生产环境中,真正的货币被交换。在沙盒环境中,一切运行相同,但货币是虚拟的。这是为了测试目的。

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


6

在软件开发中,“沙盒”指以隔离的方式进行开发,而不会干扰其他人。

它与版本控制并不相似。但是一些版本控制方法(如分支)可以帮助创建沙盒。


0

更常见的是我们提到另一个沙盒


无论如何,沙盒通常意味着一个隔离的环境。你可以在沙盒中做任何你想做的事情,但它的影响不会传播到沙盒之外。例如,在软件开发中,这意味着你不需要去操作/usr/lib等内容来测试你的库等。

0

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

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

主要文章在这里


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接