7

注意:我会很感激这个标签的一些建议..

我想为我的用户提供一种以编程方式操作服务器上数据的方法。这将通过使用稍后执行的浏览器内代码编辑器来完成,这与https://www.onx.ms采用的方式没有什么不同。

我想避免编写 DSL(采用的障碍?),并且希望用户编写的语言是基于 JavaScript 或 Ruby 的。

我明显担心的是安全性。我了解允许用户生成的代码在服务器端运行的危险,但我可以采取哪些步骤来消除风险?

http://railsforzombies.com这样的网站真的使用irb,还是比这简单得多?

4

2 回答 2

1

Google Caja让您可以在您的网站中安全地嵌入用户指定的 Javascript,但我认为它可能旨在在用户的浏览器中而不是在您的服务器上运行代码。我自己没用过。

我不知道是否有针对其他语言的现成解决方案,但我认为自定义解决方案将涉及在删除所有允许用户写入磁盘、打开网络连接、分叉进程/线程的 API 库后自己重新编译解释器,并执行任何其他危险或拒绝服务操作。将“安全”库列入白名单是唯一可行的方法。

如果您为各个用户提供单独的虚拟服务器,那会更安全。

于 2012-06-19T23:18:07.793 回答
1

你会考虑 Java(或其他 JVM 语言,如 JRuby、Scala、Clojure 等)吗?如果是这样 - JVM 中有强大的功能来限制沙盒应用程序的权限。有关详细信息,请参阅其他问题:如何创建 Java 沙箱?

于 2012-06-20T08:07:00.530 回答