我正在编写一个 Node 应用程序,它允许用户执行任意 javascript 代码——一种“内部 API”/业务流程,超出了常规 UI。
我正在寻找一个提供以下功能的沙盒环境:
在不产生全新线程的情况下单独执行 - 这将由成千上万的用户运行,我更愿意坚持使用无法访问父调用堆栈的匿名函数......或者......在线程的情况下...... . 跨多个服务器生成的能力。
语法检查在解析/执行错误时抛出异常与使整个应用程序崩溃。
禁用函数/var 访问的能力。我试图阻止对 Node 的 I/O 的访问......所以用户不能将其转换为 DoS 脚本或读取 /etc/passwd,但可以运行任何本机语法和预先批准的函数列表。
超时控制...所以执行上限可以适用于
while(true) do_intensive_stuff();
等。
有什么明显的选择浮现在脑海中?