限制在Rails中访问用户提交的代码

我正在开发一个rails应用程序,它将ruby代码作为输入并执行它。 由于提交的代码来自不受信任的域,我想限制对某些方法和模块的访问。 例如,我不希望用户访问File.readopen()

此外,是否可以限制只访问几个模块? 用户提交的代码只能要求白名单中的模块。

我可以对用户代码进行validation,但我想检查ruby语言或任何模块是否已具备此function。

Codeschool.com有互动教程。 我想知道他们是否限制访问用户代码或进行任何validation。

我总是对这种任务满意地使用shikashi 。

Ruby有一个内置的function, $SAFE

你可以在这里找到一些基本介绍http://edwinmeyer.com/Release_Integrated_RHG_09_10_2008/chapter07.html然后你可以轻松谷歌更多(我只能推荐书籍)

另请查看http://www.ruby-doc.org/docs/ProgrammingRuby/html/taint.html

根据我的记忆,这里的解决方案是加载你的应用程序,然后在一个线程中将$SAFE级别提升到4,在那里执行代码(这不能在以后降低,所以你首先需要允许Rails加载级别0)