【发布时间】:2023-03-19 08:59:01
【问题描述】:
有哪些选项可以安全地在 node.js 中运行(可能是恶意的)用户提交的脚本? IE。在阻止代码访问敏感数据和 API 的环境中?
vm.runInNewContext(userScript, {}) 是一个诱人的起点……但那里似乎有known issues。
sandbox module 看起来很有趣,但也使用了runInNewContext(),所以我对此有点怀疑。
【问题讨论】:
-
我推荐使用
vm,因为它是节点核心的一部分。由于节点核心倾向于修复其错误,因此假设问题将得到修复 -
@Raynos 这不是错误。文档说它仅适用于已知良好的代码。
-
@thejh - 是的,但 API 确实倾向于相当合理的信念,即代码在完全不同的上下文中执行,这意味着所述代码不应该能够访问当前上下文。我希望 API 的 intent 正是如此 - 提供一个运行脚本的沙箱。所以......我认为可以证明这只是一个有据可查的错误。 :)
-
这能回答你的问题吗? How to run untrusted code serverside?
标签: javascript node.js v8