嵌入式节点/javascript沙盒?
我正在编写一个节点应用程序,它允许用户执行任意javascript代码——有点像“内部API”/业务流,扩展到常规UI之外 我正在寻找提供以下功能的沙箱环境:嵌入式节点/javascript沙盒?,javascript,node.js,sandbox,v8,Javascript,Node.js,Sandbox,V8,我正在编写一个节点应用程序,它允许用户执行任意javascript代码——有点像“内部API”/业务流,扩展到常规UI之外 我正在寻找提供以下功能的沙箱环境: 单独执行而不产生一个全新的线程-这将由数千名用户运行,我更喜欢使用无法访问父调用堆栈的匿名函数。。。或在线程的情况下。。。跨多个服务器生成的能力 语法检查,在解析/执行错误时引发异常,而不是使整个应用程序崩溃 禁用函数/var访问的能力。我正在尝试阻止访问节点的I/O。。。因此,用户不能将其转换为DoS脚本或读取/etc/passwd,
- 单独执行而不产生一个全新的线程-这将由数千名用户运行,我更喜欢使用无法访问父调用堆栈的匿名函数。。。或在线程的情况下。。。跨多个服务器生成的能力
- 语法检查,在解析/执行错误时引发异常,而不是使整个应用程序崩溃
- 禁用函数/var访问的能力。我正在尝试阻止访问节点的I/O。。。因此,用户不能将其转换为DoS脚本或读取/etc/passwd,但可以运行任何本机语法和预先批准的函数列表
- 超时控制。。。因此,执行上限可以应用于
(true)do_-intensive_-stuff()代码>,等等
此外,还可以尝试查看Google for‘node js sandbox’中workers是如何实现的,您将获得一些不同年龄和成熟度的项目
似乎很受欢迎。还有另一个模块可以完成这项工作-。与沙盒不同,沙盒允许您使用白名单内置节点对象安全运行不受信任的代码。内置方法对此不起作用吗?我没有亲自测试过,但它们似乎是你的一个好选择,至少在开始时是这样。你可以很容易地将你的额外功能包装起来。这是一个很好的建议,但现在看起来还不够成熟。。。根据文档:“稳定性:2-不稳定”稳定性指标指的是API。换言之,API可能会在稍后更改为较新版本的Node。它并不表示节点的特定部分不应在生产中使用。为此,我建议查看他们的bug追踪器。感谢您的澄清,这很有意义。感谢您的建议。js似乎是一个全面的解释器——如果可能的话,为了提高速度,我更喜欢使用原生V8。沙盒工作节点的集合是安全的,并且看起来具有良好的可伸缩性,但它仍然会公开节点函数吗?我试图限制对全局对象的所有访问,但通过API对象公开的只读函数除外,因此代码需要在我定义的API范围内编写。这似乎是迄今为止最接近的!注:gf3沙盒可以被打破。