嵌入式节点/javascript沙箱
Embedded node/javascript sandbox?
我正在编写一个Node应用程序,该应用程序允许用户执行任意javascript代码——有点像"内部API"/业务流,扩展到常规UI之外。
我正在寻找一个提供以下功能的沙箱环境:
-
在不生成全新线程的情况下单独执行-这将由数千名用户运行,我更喜欢使用无法访问父调用堆栈的匿名函数。。。或者。。。在线程的情况下。。。跨多个服务器生成的能力。
-
语法检查在解析/执行错误时引发异常,而不是崩溃整个应用程序。
-
禁用函数/var访问的功能。我正试图阻止访问节点的I/O。。。因此,用户不能将其转换为DoS脚本或读取/etc/passwd,但可以运行任何本地语法和预先批准的函数列表。
-
超时控制。。。因此执行上限可以应用于
while(true) do_intensive_stuff();
等
脑海中浮现出明显的选择吗?
谷歌搜索"node-js-sandbox",您将获得一些不同年龄和成熟度的项目。
http://gf3.github.com/sandbox/似乎很受欢迎。
解决方案1:使用js.js解释器。解决沙盒,但点头解决超时控制。
解决方案2:拥有沙盒worker node.js进程池(每个进程都在自己的chroot或单独的vm环境中),通过tcpsocket/dnode/自己的rpc进行通信。输入任务在队列中等待,如果达到执行限制,则整个过程将被终止并重新生成,否则将被重用到下一个任务。这样你就不受单机的限制,可以很容易地水平缩放。
还试着检查工人是如何在travis ci 中实现的
还有另一个模块可以完成这项工作-vm2。与sandbox
不同,它允许您使用白名单内置节点对象安全地运行不受信任的代码。
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 使用php或javascript从facebook相册URL中删除多余的部分
- 正在添加'X'按钮,在文本字段旁边使用javascript
- 如何在JavaScript中将字符串转换为函数引用
- 模糊事件的Javascript测试
- Javascript更改图标
- 在 Javascript 中围绕 Function() 创建沙箱
- 我的regex可以在regex101.com沙箱中工作,但不能在实际的javascript中工作
- 嵌入式节点/javascript沙箱
- 使用 Vim 作为 Javascript 沙箱:如何将缓冲区写入节点并在另一个缓冲区中读取结果
- 如何在服务器上使用V8在沙箱模式下运行javascript
- 使用新的Harmony直接代理实现一个javascript沙箱
- 对于不受信任的javascript代码,web worker是一种安全的沙箱处理方法吗?
- 沙箱JavaScript使用with关键字
- 如何用javascript从iframe中移除沙箱属性
- JavaScript沙箱:在给定范围内隐藏全局变量
- JavaScript中的沙箱到底是什么
- 如何在沙箱环境中运行JavaScript函数