相关疑难解决方法(0)

如何在node.js沙箱中安全地运行用户提交的脚本?

安全地在node.js中运行(可能是恶意的)用户提交的脚本有哪些选项?即在一个阻止代码访问敏感数据和API的环境中?

vm.runInNewContext(userScript, {})是一个诱人的起点......但似乎那里有已知的问题.

沙箱模块看起来很有趣,但使用runInNewContext()也使我有点持怀疑态度的吧.

javascript v8 node.js

41
推荐指数
2
解决办法
1万
查看次数

如何运行不受信任的代码服务器端?

我试图在linux + node.js中使用沙盒模块运行不受信任的javascript代码,但它已经坏了,我只需要让用户编写打印出一些文本的javascript程序.不允许其他i/o,只使用普通的javascript,没有其​​他节点模块.如果不是真的可以这样做,你建议用什么其他语言来完成这项任务?我需要的最小特征集是一些数学,正则表达式,字符串操作和基本的JSON函数.脚本将运行让我们说5秒钟顶部,然后该过程将被杀死,我怎么能实现这一点?

javascript linux node.js

22
推荐指数
3
解决办法
6530
查看次数

Node.js域模块的替代方案是什么?

domain内置模块 将被弃用:

稳定性:0 - 不推荐使用

此模块正在等待弃用.更新API完成后,将完全弃用此模块.大多数最终用户不应该有使用此模块的原因.绝对必须具有域提供的功能的用户可能暂时依赖它,但是应该期望将来必须迁移到不同的解决方案.

据此,他们目前并不真正推荐解决方案.但是如何实现类似于下面的功能:

var d = require('domain').create();
d.on('error', function(err) {
  console.log(err);
});
d.run(function() {
  setTimeout(function () {
     throw new Error("Something went really wrong in async code.");
  }, 1000);
});
Run Code Online (Sandbox Code Playgroud)

因此,这会处理从异步内容中抛出的错误,但domain不推荐使用该模块.

如何将此代码迁移到更好的位置?


我的用例是我正在编写一个接受函数作为输入的库,它运行该函数并显示结果(实际上,您可以将其视为单元测试库):

myLib.it("should do something", function (done) {
   setTimeout(function () {
        // Some async code
        // ...
        // But here an error is thrown
        throw new Error("dummy");
   }, 1000);
});
Run Code Online (Sandbox Code Playgroud)

显然,我不想在这种情况下崩溃进程,但我确实希望显示一个很好的错误(所以基本上捕获此函数中的错误).

目前在图书馆我做:

var err = null;
try {
   fn(callback);
} …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous try-catch node.js

12
推荐指数
1
解决办法
3623
查看次数

如何执行用户在我的页面上输入ACE编辑器的代码

我在我的页面上使用ACE Editor作为我的文本编辑器,用户将输入代码.

  1. 我希望执行用户在浏览器上或浏览器中输入的代码.如何从编辑器获取输入并使用Browsers V8 JavaScript编译器?

  2. 然后我将尝试在Node.js上运行它,但首先我必须学习Node :).

javascript ace-editor

8
推荐指数
1
解决办法
5454
查看次数

标签 统计

javascript ×4

node.js ×3

ace-editor ×1

asynchronous ×1

linux ×1

try-catch ×1

v8 ×1