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

时间:2013-07-28 09:46:20

标签: ruby-on-rails ruby metaprogramming

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

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

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

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

2 个答案:

答案 0 :(得分:3)

Ruby有一个内置功能,$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级)

答案 1 :(得分:2)

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