我想能够运行不可信的ruby代码。我希望能够将变量传递给它可能使用的不可信代码。我也想让代码将结果返回给我。这里是一个概念性的例子,我在想什么如何在安全沙箱内运行不受信任的Ruby代码?
input = "sweet"
output = nil
Thread.start {
$SAFE = 4
#... untrusted code goes here, it uses the input variable(s)
#to calculate some result that it places in the output variable
}
#parse the output variable as a string.
只是为了澄清,我基本上使用不受信任的代码作为函数。我想 提供它的一些输入,然后让它写入输出。这就是我真正想要的,我不在乎它是如何完成的,我只是希望能够使用不可信的Ruby代码作为一种功能。该解决方案不必看起来像我上面写的代码,我只是用它来说明我想要的。
现在,我可以认为目前的3种方法可以做到这一点:
- 使用$ SAFE级别的结构之上。
- whytheluckystiff有一个红宝石沙盒插件
- 我可以在自己的虚拟机上运行每个功能,使用某种类型的os虚拟化软件,如vmware或Xen等。
我想知道是否有人有任何建议运行不可信的Ruby代码的功能方式?你会推荐什么样的选择?你会怎么做呢?谢谢。
有没有人有任何解释$ SAFE有问题的参考? – sheldonh 2011-12-19 15:28:52