允许用户使用沙盒版本的编程语言

时间:2012-06-12 07:01:40

标签: user-input sandbox

注意:我很欣赏这个标签的一些建议..

我想为我的用户提供一种以编程方式操作服务器上的数据的方法。这可以通过使用浏览器中的代码编辑器在以后执行,与https://www.onx.ms采用的方式不同。

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

您会考虑Java(或其他JVM语言,如JRuby,Scala,Clojure等)吗?如果是这样的话 - JVM中有很多权限来限制沙盒应用程序的权限。有关详细信息,请参阅此其他问题:How do I create a Java sandbox?