相关疑难解决方法(0)

如何在安全的沙箱中运行不受信任的Ruby代码?

我希望能够运行不受信任的ruby代码.我希望能够将变量传递给它可能使用的所述不受信任的代码.我也希望代码将结果返回给我.这是我正在思考的一个概念性例子

input = "sweet"
output = nil
Thread.start {
   $SAFE = 4
   #... untrusted code goes here, it uses the input variable(s)
   #to calculate some result that it places in the output variable
}
#parse the output variable as a string.
Run Code Online (Sandbox Code Playgroud)

只是为了澄清,我基本上使用不受信任的代码作为函数.我想提供一些输入,然后允许它写入输出.这就是我真正想要的,我不在乎它是如何完成的,我只是希望能够使用不受信任的Ruby代码作为一种功能.解决方案不必看起来像我上面写的代码,我只是用它来说明我想要的东西.

现在,我现在可以想到3种方法:

  1. 使用上面的$ SAFE级别构造.
  2. 为什么theluckystiff有一个用于红宝石的Sandbox插件
  3. 我可以使用某种os虚拟化软件(如vmware或Xen等)在自己的虚拟机中运行每个功能.

我想知道是否有人有任何建议以功能方式运行不受信任的ruby代码?你会推荐什么选择?你会怎么做?谢谢.

ruby

15
推荐指数
1
解决办法
4189
查看次数

有没有一种安全的方法在Ruby中运行eval?

我们正在开发一种对Tropo有类似要求的产品(参见https://github.com/tropo/tropo-samples/tree/master/ruby),允许用户编写可以访问的ruby脚本传入的一些函数和变量.但是,我们希望避免用户访问全局调用,删除所有用户或终止程序.有没有办法用eval完成这个?

ruby ruby-on-rails sandbox

7
推荐指数
1
解决办法
3408
查看次数

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

我正在为Rails项目实现一个插件架构.插件架构包括插件编写者编写要在服务器上执行的Ruby代码的能力.我想让这个安全,以便插件编写者无法编写破坏性代码.

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

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

我对这个很难过.有人有主意吗?

ruby plugins ruby-on-rails

5
推荐指数
1
解决办法
390
查看次数

标签 统计

ruby ×3

ruby-on-rails ×2

plugins ×1

sandbox ×1