我已阅读Wikipedia article,但我不确定它的含义,以及它与版本控制的相似之处。
如果有人能用非常简单的术语解释什么是沙盒,那将会很有帮助。
答案 0 :(得分:245)
sandpit or sandbox是一个低矮的宽容器或浅沙洼,里面装满了儿童可以玩的沙子。许多带孩子的房主在他们的后院建造沙坑,因为与许多游乐场设备不同,它们可以容易且廉价地建造。 “沙坑”也可以表示露天砂矿。
嗯,软件沙箱与为孩子玩的沙箱没什么区别。通过为孩子提供沙箱,我们模拟真实游戏场地的环境(换句话说是isolated environment
),但限制孩子可以做什么。因为我们不希望孩子被感染,或者我们不希望他给别人带来麻烦。 :)原因是什么,我们只想限制孩子可以为Security Reasons
做些什么。
现在进入我们的软件沙箱,我们让任何软件(子)执行(播放),但对它(他)可以做什么有一些限制。我们可以感受到安全&关于执行软件可以做什么的安全。
你见过&使用防病毒软件。对?它也是一种沙箱。它限制任何程序可以做什么。当检测到恶意活动时,它会停止并通知用户“此应用程序正在尝试访问这样的资源。是否要允许?”。
下载名为sandboxie的程序,您可以亲身体验沙盒。使用此程序,您可以在受控环境中运行任何程序。
红色箭头表示从正在运行的程序流入计算机的更改。标记为“硬盘”(无沙箱)的框显示正常运行的程序所做的更改。标有硬盘(带有沙盒)的框显示了在Sandboxie下运行的程序所做的更改。动画说明Sandboxie能够拦截更改并将其隔离在沙箱中,并将其描绘为黄色矩形。它还说明了将更改分组在一起可以轻松地一次删除所有更改。
现在从程序员的角度来看,sandbox限制了允许应用程序使用的API。在防病毒示例中,我们限制了系统调用(操作系统API)。
另一个例子是像topcoder这样的在线编码竞技场。您提交代码(程序)但它在服务器上运行。对于服务器的safety
,他们应该限制程序API的访问级别。换句话说,他们需要创建一个沙箱并在其中运行您的程序。
如果你有一个合适的sandox,你甚至可以运行受病毒感染的文件,并阻止病毒的所有恶意活动,并亲自看看它正在尝试做什么。事实上,这将是Antivirus研究员的第一步。
答案 1 :(得分:27)
沙盒的这个定义基本上意味着拥有测试环境(开发人员集成,质量保证,阶段等)。这些测试环境模仿生产,但它们不共享任何生产资源。它们具有完全独立的服务器,队列,数据库和其他资源。
更常见的是,我看到沙盒指的是虚拟机之类的东西 - 隔离机器上的一些正在运行的代码,这样它就不会影响基本系统。
答案 2 :(得分:12)
具体示例:假设您有一个处理汇款的应用程序。在生产环境中,真钱交换。在沙盒环境中,一切都运行完全相同,但钱是虚拟的。这是出于测试目的。
例如,Paypal提供了这样的沙盒环境。
答案 3 :(得分:5)
对于软件开发中的“沙盒”,它意味着在不以孤立的方式打扰其他人的情况下进行开发。
它与版本控制不相似。但是一些版本控制(作为分支)方法可以帮助制作沙箱。
答案 4 :(得分:0)
我们更常提到the other sandbox。
无论如何,沙箱通常意味着隔离环境。您可以在沙箱中执行任何您喜欢的操作,但其效果不会传播到沙箱之外。例如,在软件开发中,这意味着您不需要弄乱/usr/lib
中的内容来测试您的库等。
答案 5 :(得分:0)
沙盒是一个独立的测试环境,使用户能够运行程序或执行文件,而不会影响他们运行的应用程序、系统或平台。软件开发人员使用沙箱来测试新的编程代码。特别是网络安全专业人员使用沙箱来测试潜在的恶意软件。如果没有沙箱,应用程序或其他系统进程可以无限制地访问网络上的所有用户数据和系统资源。
沙盒还用于安全地执行恶意代码,以避免损害运行代码的设备、网络或其他连接的设备。使用沙箱检测恶意软件可提供额外的安全威胁保护层,例如使用零日漏洞的隐蔽攻击和漏洞利用。
主要文章是here。