9

问:有没有办法对 Go 程序进行沙箱化?
答:是的。请参阅带有 Goplay.golang.org 的GAE

这是怎么做到的?

在我的特殊情况下,我希望允许用 Go 编写不受信任的扩展。我想 Go Playground 正是我所需要的。它是开源的吗?或者至少有一些关于如何构建类似服务的文档?

笔记:

code.google.com/p/go-playground是 Go Playground 编辑器的源代码。但是沙盒隐藏在 POST 的后面http://golang.org/compile?output=json

4

2 回答 2

12

操场沙盒技术,AFAIK,不是开源的。我认为,其中一个原因是,公开披露实施细节将使任何攻击尝试变得更加容易。

如果滚动您自己的沙箱,我建议提供 {unsafe,runtime,net,os,syscall} 包的假/空/受限版本,并禁止 GOMAXPROCS 高于 1。但设计必须根据您的定义量身定制的沙盒。文件访问是/否/限制?网络是/否/受限?等等...最后但并非最不重要的一点是,可能应该禁用 CGO、汇编代码甚至可能构建标签。

考虑到上面的列表是不完整的。

于 2013-02-07T20:57:58.137 回答
3

根据http://blog.golang.org/playground,go playground 中的沙箱使用 NaCl 来限制 CPU 和 RAM 的使用。它的代码已合并到 go 版本 1.3。

于 2014-04-23T09:55:33.610 回答