在Rails中使用沙盒模式的语言

5
我发现曾经有一个沙盒宝石(由在浏览器中尝试Ruby的开发人员创建),但它仅与Ruby 1.8兼容。另一个问题是我再也找不到它了(似乎他们停止从服务器提供宝石...)。
那么,有没有一种安全的方法可以在沙盒中运行Ruby(以便您可以从浏览器中运行它)?或者有没有一种简单的方法可以在沙盒中运行(例如lua / python)(无法访问文件系统,无法创建对象等),并且可以从Ruby(Rails 2.2)中调用?
我想要制作一个应用程序,就像try_ruby,即使没有Ruby也可以。但它必须是一种易学的语言(我看到Ruby中有Prolog,甚至是Lisp,但我认为它们不是易学的语言...)。
那么,你有什么建议或提示吗?还是我应该开始在Ruby中创建自己的DSL(如果有一种创建相对安全的系统的解决方案)?
谢谢
6个回答

4

我正在开发一个基于C语言修改版ruby解释器的沙盒实现,最近发布了一个名为shikashirdoc文档)的gem功能版本。


嗨,我正试图在Rails项目中使用你的gem。我遇到了一个奇怪的问题,在可枚举对象上出现了未定义方法“shadow”。这是当我访问关联代理方法时发生的。 - Subba Rao
请将错误报告到主项目页面(https://github.com/tario/shikashi),以便更快地修复。 - rseminara
这个 bug 已经不存在了,因为代码进行了重构,用 shikashi 替换了 hook、rallhook gem 的丑陋方法,这是一个更稳定的解决方案(许多其他问题也消失了)。 - rseminara
请注意,Shikashi似乎需要一个明确的白名单,列出用户可以使用或分配的所有方法/常量。这非常安全...但对于大多数人想要的沙盒来说可能过于安全了。 - Phrogz

1

1

1

0

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


0

我不确定您是否想在沙盒中运行任何语言。但是我发现JavaScript已经作为沙盒语言运行了很长时间。Ruby Racer项目可以让您在Ruby中嵌入v8引擎。希望这有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接