限制在Rails中访问用户提交的代码
我正在开发一个rails应用程序,它将ruby代码作为输入并执行它。 由于提交的代码来自不受信任的域,我想限制对某些方法和模块的访问。 例如,我不希望用户访问File.read
或open()
。
此外,是否可以限制只访问几个模块? 用户提交的代码只能要求白名单中的模块。
我可以对用户代码进行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)