javascript - 安全的、可沙盒化的用户暴露编程语言/环境?

标签 javascript python sandbox

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

我希望能够很好地限制这些脚本占用的资源(例如,最长执行时间应为 100 毫秒)。我还想确保一个安全的沙箱,以便每个用户只能访问一组有限的数据和资源,并被阻止访问磁盘、其他人的数据等。

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

理想情况下,我希望使用一种众所周知的常用编程语言的沙盒子集,这样用户就可以轻松上手。后端是用 Python 编写的,因此基于 Python 的语言可能会有好处,但我对其他语言和技术持开放态度。 Javascript 也因其简单的性质和普遍的可用性而具有吸引力。

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

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

对语言和技术有什么想法或建议吗?有没有其他人尝试这样做的例子以及他们遇到的成功和失败?

最佳答案

我为此使用 Lua,但它针对的是一个支持 Lua 的社区。所以我的回答是您的用户是谁?

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

关于javascript - 安全的、可沙盒化的用户暴露编程语言/环境?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/373406/

相关文章:

javascript - 自定义剪切,如 HTML5 和 CSS 中的背景

python - Matplotlib - 提取 3D 多边形图的 2D 轮廓

ios - 无需越狱访问应用程序文件夹

c++ - OS X Yosemite的SciTe-错误: cannot be used within an App Sandbox

macos - 在沙盒 mac 应用程序中执行 launchctl

javascript - 如何将单个参数应用于缓和过渡?

javascript - Node.js 导出调用 Controller 中的另一个 Controller 方法

javascript - 如何在渲染时显示不同的组件。我在同一页面中注册并登录

python - 溢出错误 : long int too large to convert to float

python - 为什么我不能分配给 Pandas DataFrame 的一部分?