如何沙箱去一个程序

def*_*ode 9 sandbox go

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

这是怎么做到的?

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

注意:

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

zzz*_*zzz 12

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

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

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

  • 看起来你是对的.Russ Cox为Google工作并写了关于[sanboxing Go](http://research.swtch.com/gorace)的文章. (3认同)

kri*_*anp 3

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