什么是沙箱?


118

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

如果有人可以很简单地解释什么是沙箱,那将很有帮助。

Answers:


266

在此处输入图片说明

一个沙坑或沙箱是低,宽容器或浅的凹陷装满沙子,使儿童可以玩。许多有孩子的房主在他们的后院建造沙坑,因为与许多游乐场设备不同,它们可以轻松,廉价地建造。“沙坑”也可以表示露天砂矿。

好吧,软件沙箱与为孩子玩耍而构建的沙箱没有什么不同。通过为儿童提供沙箱,我们可以模拟真实游戏环境(即isolated environment)的环境,但是对儿童的行为有所限制。因为我们不希望孩子被感染,或者我们不希望他给他人造成麻烦。:)原因何在,我们只想限制孩子可以做什么Security Reasons

现在进入我们的软件沙箱,我们让任何软件(子代)都可以执行(播放),但是对其(软件)可以做什么有所限制。我们对执行软件可以做什么感到放心

您已经看到并使用了防病毒软件。对?这也是一种沙盒。它限制了任何程序可以执行的操作。当检测到恶意活动时,它将停止并通知用户“此应用程序正试图访问某某资源。是否要允许?”。

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

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

在此处输入图片说明

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

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

如果您使用的是合适的Sandox,则甚至可以运行受病毒感染的文件并阻止该病毒的所有恶意活动,并亲自了解其企图。实际上,这将是防病毒研究人员的第一步。


31

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

更常见的是,我看到沙箱引用的是虚拟机之类的东西-隔离计算机上的某些正在运行的代码,以免影响基本系统。


1
好的,基本上,沙箱测试是在正式使用之前在受控环境中测试软件。对?顺便说一句,为什么叫“沙盒”?
Lazer

>>之所以称为“沙盒” @eSKay,是因为人们在沙箱中使用像孩子一样的软件/硬件(thefreedictionary.com/sandbox-定义#3)。
Darmen Amanbayev 2010年

那么,沙盒环境和暂存环境之间有什么区别?
穆罕默德·贾马尔

15

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

贝宝(Paypal)提供了这样的沙盒环境。


6

对于软件开发中的“沙盒”而言,它意味着在开发时不会孤立地干扰他人。

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


0

我们通常会参考另一个沙箱


无论如何,沙箱通常意味着一个孤立的环境。您可以在沙箱中做任何您想做的事,但其效果不会在沙箱外传播。例如,在软件开发中,这意味着您无需费心/usr/lib去测试库等。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.