这是怎么做到的?
在我的特定情况下,我想允许用Go编写的不受信任的扩展。我想Go Goground正是我所需要的。它是开源的吗?或者至少有一些关于如何构建类似服务的文档?
code.google.com/p/go-playground是Go Playground编辑器的源代码。但沙箱隐藏在http://golang.org/compile?output=json
的POST后面。
答案 0 :(得分:11)
游乐场沙盒技术是AFAIK,不是开源的。其中一个原因是,我认为,公开披露实施细节会使任何攻击尝试都变得更加容易。
我建议,如果滚动你自己的沙箱,提供假的/空的/有限版本的{unsafe,runtime,net,os,syscall}包,并且不允许GOMAXPROCS高于1.但是设计必须适合于非常你对沙盒的定义。文件访问是/否/限制?网络是/否/限制?等等......最后但并非最不重要的一点是,应该禁用CGO,汇编代码甚至可能构建标签。
考虑上面的列表是不完整的。
答案 1 :(得分:3)
根据http://blog.golang.org/playground,go操场上的沙箱使用NaCl来限制CPU和RAM的使用。它的代码已合并到版本1.3。