安全,可沙箱的用户暴露的编程语言/环境?

时间:2008-12-17 01:38:54

标签: javascript python sandbox

除了为我的网站提供API之外,我还希望为用户提供编写可在我的服务器上运行的简单脚本的功能。这些脚本可以访问用户拥有的对象,并能够操作,修改和处理其数据。

我希望能够将这些脚本所占用的资源限制在一个很好的水平(例如,最大执行时间应该是100毫秒)。我还想确保一个安全的沙箱,这样每个用户只能访问一组有限的数据和资源,并且无法访问磁盘,其他人的数据等。

通常,脚本非常简单(例如,创建符合特定条件的值的总和或平均值),并且它们通常用于模板中(例如,填写此单元格或html元素的值)平均值或总和)。

理想情况下,我想使用一个众所周知的常用编程语言的沙盒子集,以便用户轻松获取。后端是用Python编写的,因此基于Python的语言可以带来好处,但我对其他语言和技术持开放态度。由于其简单的性质和通用的可用性,Javascript也很有吸引力。

这些语言应该支持创建DSL和库。

目标受众是基于Web的应用程序的一般用户群,不一定非常技术性。换句话说,它不是针对具有任何特定编程语言的特定知识的基础。我的期望是用户的一部分将创建将由大多数人使用的脚本。

有关语言和技术的任何想法或建议吗?其他人试图这样做的例子以及他们遇到的成功和失败?

1 个答案:

答案 0 :(得分:2)

我使用Lua,但是它针对的是Lua支持的社区。所以我的回答是你的用户是谁?

如果您的用户是内部的,就像我的情况一样,并且精通Python使用Python。但是,如果这是万维网的东西,我可能会选择javascript,因为它是通用语言(每个开发人员都知道它,并且很容易拾取)。至于引擎......好的V8会很好,但它不是100%线程安全的,因为你无法以无锁方式在同一进程中运行多个引擎,就像使用SpiderMonkey一样。所以你可能想要使用它。此外,由于默认情况下javascript是沙盒,因此您不必担心在您身边实施太多。