Rails中沙盒中的语言

时间:2009-01-02 13:54:40

标签: ruby sandbox

我发现有一个沙箱宝石(由制作try ruby in your browser的人创建,但它只与Ruby 1.8兼容。另一个问题是我再也找不到它了(似乎他们停止服务了来自服务器的宝石......)。

那么,是否有任何安全方式在沙箱中运行ruby(因此您可以从浏览器运行它)? 或者在沙箱中运行(例如lua / python)的简单方法(没有文件系统访问,没有对象的创建等)并且可以从Ruby调用(Rails 2.2)?

我想创建一个类似try_ruby的应用程序,即使没有下面的红宝石也是如此。但它必须是一种简单的语言(我看到有一个红宝石的序言,甚至是一个口齿不清,但我不认为它们很容易学习语言......)。

那么,您有任何建议或提示吗?或者我应该开始在Ruby中创建自己的DSL(如果有创建一个安全系统的解决方案)?

Thx

6 个答案:

答案 0 :(得分:4)

我正在基于用C编写的ruby解释器的修改开发ruby沙箱的实现,我最近发布了一个名为shikashirdoc documentation)的gem的功能版本。 / p>

答案 1 :(得分:1)

今天早上我遇到了This article on hackety.org(死链接)。也许它可以为你提供正确方向的指导

答案 2 :(得分:1)

您应该尝试在浏览器中嵌入JRuby。

http://ruby-in-browser.googlecode.com/svn/trunk/evalruby/index.html

答案 3 :(得分:1)

写下原始宝石的家伙消失了,KeyserSöze风格: http://www.rubyinside.com/why-the-lucky-stiff-is-missing-2278.html

我已经读过JRuby的宝石更新或者更新,但到目前为止我发现了它。以下是一些设置说明: http://flouri.sh/2009/4/4/how-to-set-up-the-jruby-sandbox

总的来说,看起来Ruby现在缺乏可靠的实现:(

答案 4 :(得分:0)

另一种方式就像codepad.org那样(VM隔离和检查调用)

答案 5 :(得分:0)

我不确定您是否要在沙盒中运行任何语言。但我发现JavaScript已经作为沙盒语言运行了很长时间。 The ruby racer project允许您将v8引擎嵌入ruby中。希望有所帮助。