5

我发现有一个沙盒 gem(由在您的浏览器中尝试 ruby​​ 的人创建,但它仅与 Ruby 1.8 兼容。另一个问题是我再也找不到它了(似乎他们停止从服务器...)。

那么,有没有在沙盒中运行 ruby​​ 的安全方法(这样您就可以从浏览器中运行它)?还是一种在沙箱中运行(例如 lua/python)的简单方法(没有文件系统访问,没有创建对象等)并从 Ruby(Rails 2.2)调用?

我想制作一个像 try_ruby 这样的应用程序,即使下面没有红宝石。但它必须是一种简单的语言(我看到 ruby​​ 中有一个序言,甚至是一个 lisp,但我认为它们不容易学习语言......)。

那么,您有什么建议或技巧吗?还是我应该开始在 Ruby 中创建自己的 DSL(如果有创建某种安全系统的解决方案)?

谢谢

4

6 回答 6

4

我正在开发一个基于用 C 编写的 ruby​​ 解释器的修改的 ruby​​ 沙箱实现,我最近发布了一个名为shikashi的 gem 的功能版本(rdoc 文档)。

于 2010-06-21T01:10:46.943 回答
1

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

我读过 JRuby gem 更新或维护得更好,但到目前为止我发现它有问题。以下是一些设置说明: http: //flouri.sh/2009/4/4/how-to-set-up-the-jruby-sandbox

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

于 2010-03-28T08:11:19.920 回答
1

今天早上我在hackety.org(死链接)上看到了这篇文章。也许它可以为您提供正确方向的指南

于 2009-01-02T16:32:48.287 回答
1

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

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

于 2009-01-02T17:37:25.737 回答
0

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

于 2009-02-04T10:06:48.950 回答
0

我不确定您是否想在沙箱中运行任何语言。但是我发现 JavaScript 作为沙盒语言运行了很长时间。ruby Racer 项目允许您将 v8 引擎嵌入到 ruby​​ 中。希望有帮助。

于 2010-07-09T07:20:39.677 回答