12

我想了解有关沙盒的更多信息。不只是关于它。我想学习这样我就可以编写一个简单的沙箱。

令人惊讶的是,任何地方都没有任何可用的信息。甚至维基百科的文章也不好。

任何人都可以请给我推荐好的材料。我知道它的概念非常先进。那么,学习和掌握它的先决条件是什么。

4

7 回答 7

7

阅读有关 API 挂钩的信息,例如sandboxie挂钩 Windows 内核以过滤对文件系统的所有 api 调用并将其结果重定向到沙箱,您可以挂钩 API 并对其进行过滤,仅传递有效参数,为无效调用返回错误

对于 API 挂钩,您会在网上找到大量资料,请在 codeproject.com 上尝试

于 2010-01-03T12:33:17.603 回答
4

Google 的 Chromium 使用沙盒,并且有几个关于它的文档:

于 2010-01-07T15:56:42.190 回答
3

您还可以查看FreeBSD 中的 jails。这些是沙盒的 FreeBSD 等价物。

jail的源代码是可用的(尽管您还必须了解其余的 FreeBSD 代码。)

于 2010-01-03T21:46:26.803 回答
3

一个简单的沙箱只是一个让“某事”执行但限制它可以做什么的环境。

通常,这个“东西”是一种已经存在的语言,如 Java、JavaScript、C# 或本机代码。Java 具有用于小程序等的“沙盒”API,.NET 具有各种“信任”级别,JavaScript 具有由解释器(浏览器)设置的边界。

所以“编写”你自己的沙箱有点奇怪,除非你也有你想要沙箱的语言。

你有这样的语言吗?你想具体了解什么?

于 2010-01-08T03:19:40.200 回答
2

这在很大程度上取决于您想要沙箱。如果它是一个具有多种接口/语言的成熟系统,你真的不想重新发明轮子,而是在VirtualBoxQEmu其他替代方案中运行虚拟机

无论如何,沙箱,至少在某种程度上是您“应该”运行的系统的虚拟化......

如果您需要对单一(解释的)语言的应用程序进行沙箱处理,那么修改解释器听起来是一种明智的方法。

于 2010-01-08T09:58:34.453 回答
1

答案可能是特定于语言的。不幸的是,大多数语言都没有内置的沙盒功能。但是函数式语言往往足够强大,以至于可以从头开始构建而无需扩展语言。

在 Tcl 中,基本机制是创建从解释器:

interp create -safe sandbox
interp eval sandbox $set_up_code
set result [interp eval sandbox $unsafe_code]
于 2010-01-03T12:16:52.670 回答
1

前几天我写了一篇关于 Linux 中沙盒方法的概述,其中链接到了许多不同技术的参考资料。类似的方法适用于其他操作系统。我希望它会有所帮助——我也找不到太多全面的文档。

于 2011-04-11T11:23:50.740 回答