沙箱脚本编写

6
我对如何使用脚本语言以沙盒方式执行简单代码块很感兴趣。主机语言/环境可以是c#/ruby/python/java(除了c以外的任何语言)。但是脚本语言也可以是一些不常见的语言,例如javascript/python/ruby/perl等。
我想要的是一种使用传统编程结构的脚本执行方法,例如条件/循环/日期操作/数组等。但是我不想暴露诸如IO,连接到http流,数据库等的内容。
我目前正在研究使用Python适配器的SpiderMonkey,但我想知道是否有其他选项需要考虑。
2个回答

2
Lua非常容易对代码进行沙盒隔离。这里提供了一个关于Lua沙盒的参考链接:Lua wiki。它是一种极好的极简脚本语言,易于嵌入其他(C或C++)代码中。因此,您的主机将是嵌入在其他代码中的Lua(或者只是出厂安装的Lua解释器)。您的脚本语言将是Lua。
如果您不了解它,我相信还有其他不需要学习新语言的好的解决方案。

1

你可以使用.NET(VB,C#或任何语言)通过代码访问安全性来实现 - 在机器上设置策略,不允许访问任何你想要的框架类。

请参阅设置安全策略

默认情况下,该策略允许源自本地计算机的代码执行任何操作;您可以将其设置为默认情况下,代码无法调用I/O类,无法进行HTTP连接等。


1
在看了这条评论后,我开始研究Boo语言。我想找一种可扩展的语言和一些不错的动态性。我突然意识到CLR是一个很好的平台,并且我相信有一天C#会成为像Java一样的恐龙,但CLR将会长期存在。 - Owen

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