如何沙箱去一个程序

时间:2013-02-07 20:26:57

标签: go sandbox

问:有没有办法沙盒Go程序?
答:是的。请参阅GAE w/ Goplay.golang.org

这是怎么做到的?

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

注意:

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

2 个答案:

答案 0 :(得分:11)

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

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

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

答案 1 :(得分:3)

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