【问题标题】:Restricting access to user submitted code in Rails在 Rails 中限制对用户提交的代码的访问
【发布时间】:2013-07-28 09:46:19
【问题描述】:

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

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

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

Codeschool.com 提供交互式教程。我想知道他们是否限制对用户代码的访问或是否进行任何验证。

【问题讨论】:

    标签: ruby-on-rails ruby metaprogramming


    【解决方案1】:

    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)

    【讨论】:

      【解决方案2】:

      我一直很满意地使用shikashi 来完成此类任务。

      【讨论】:

      • 这看起来很有希望,但我使用的版本(0.5.2)非常有问题。一些示例不起作用link
      猜你喜欢
      • 2017-05-26
      • 2011-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-11
      • 1970-01-01
      • 1970-01-01
      • 2016-07-06
      相关资源
      最近更新 更多