在有限的环境中执行ruby代码

时间:2012-08-27 15:00:41

标签: ruby-on-rails ruby plugins

我正在为Rails项目实现插件架构。插件体系结构包括插件编写者编写要在服务器上执行的Ruby代码的能力。我希望使其安全,以便插件编写者无法编写破坏性代码。

我认为我需要做的是,虽然我对其他选项持开放态度,但是在一个范围有限的隔离环境中执行插件的Ruby代码。我正在考虑therubyracer gem的精神,但我想安全地执行Ruby而不是JavaScript。

我无法找到一个很好的方法来做到这一点。我想过将eval与有限的bindings对象一起使用,但我认为eval几个文件很难,我认为我不能充分限制绑定。例如,我不希望插件能够在模型上执行类似destroy_all的操作,或者在应用程序中修补现有代码。

我对这个很难过。有人有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我建议你阅读以下关于ruby安全级别的文档。有时,服务使用级别4来处理未知用户嵌入的脚本:

http://ruby-doc.org/docs/ProgrammingRuby/html/taint.html