我已经阅读了Wikipedia文章,但是我不确定它的含义以及与版本控制的相似程度。
如果有人可以很简单地解释什么是沙箱,那将很有帮助。
我已经阅读了Wikipedia文章,但是我不确定它的含义以及与版本控制的相似程度。
如果有人可以很简单地解释什么是沙箱,那将很有帮助。
Answers:
一个沙坑或沙箱是低,宽容器或浅的凹陷装满沙子,使儿童可以玩。许多有孩子的房主在他们的后院建造沙坑,因为与许多游乐场设备不同,它们可以轻松,廉价地建造。“沙坑”也可以表示露天砂矿。
好吧,软件沙箱与为孩子玩耍而构建的沙箱没有什么不同。通过为儿童提供沙箱,我们可以模拟真实游戏环境(即isolated environment
)的环境,但是对儿童的行为有所限制。因为我们不希望孩子被感染,或者我们不希望他给他人造成麻烦。:)原因何在,我们只想限制孩子可以做什么Security Reasons
。
现在进入我们的软件沙箱,我们让任何软件(子代)都可以执行(播放),但是对其(软件)可以做什么有所限制。我们对执行软件可以做什么感到放心。
您已经看到并使用了防病毒软件。对?这也是一种沙盒。它限制了任何程序可以执行的操作。当检测到恶意活动时,它将停止并通知用户“此应用程序正试图访问某某资源。是否要允许?”。
下载名为sandboxie的程序,您将获得有关沙盒的经验。使用此程序,您可以在受控环境中运行任何程序。
红色箭头指示从正在运行的程序到计算机的更改。标有“硬盘(无沙箱)”的框显示了正常运行的程序所做的更改。标有“硬盘(带沙箱)”的框显示了在沙箱下运行的程序所做的更改。动画说明,Sandboxie能够拦截更改并将其隔离在沙盒中(以黄色矩形表示)。它还说明,将更改分组在一起可以轻松地一次删除所有更改。
现在从程序员的角度来看,沙箱正在限制允许应用程序使用的API。在防病毒示例中,我们限制了系统调用(操作系统API)。
另一个示例是像topcoder这样的在线编码领域。您提交了一个代码(程序),但是它在服务器上运行。对于safety
服务器,它们应限制程序API的访问级别。换句话说,他们需要创建一个沙箱并在其中运行您的程序。
如果您使用的是合适的Sandox,则甚至可以运行受病毒感染的文件并阻止该病毒的所有恶意活动,并亲自了解其企图。实际上,这将是防病毒研究人员的第一步。
沙盒的定义基本上意味着拥有测试环境(开发人员集成,质量保证,阶段等)。这些测试环境模仿生产,但是它们不共享任何生产资源。它们具有完全独立的服务器,队列,数据库和其他资源。
更常见的是,我看到沙箱引用的是虚拟机之类的东西-隔离计算机上的某些正在运行的代码,以免影响基本系统。
举一个具体的例子:假设您有一个处理汇款的应用程序。在生产环境中,将交换真实货币。在沙盒环境中,一切运行完全相同,但是钱是虚拟的。这是出于测试目的。
贝宝(Paypal)提供了这样的沙盒环境。