gpt4 book ai didi

javascript - 如何在沙箱环境中运行JavaScript函数?

转载 作者:太空宇宙 更新时间:2023-11-04 03:11:47 30 4
gpt4 key购买 nike

我有一个用 JavaScript(node.js) 编写的应用程序服务器。我接受 JS 函数代码作为来自 Web 浏览器的输入。现在我希望能够在服务器上运行这个函数而不影响其他任何东西。

我想确保该函数正在修改的所有变量都是该函数的本地变量,并且不会影响服务器上的任何其他变量。

此外,我想以某种方式避免无限循环或递归以及任何其他不可预见的问题。

大多数情况下,我希望用户能够在我采取某些操作之前触发一些代码作为要运行的函数。

有什么想法吗?

最佳答案

Sandbox是一个 Node 模块,根据README;

  • 可用于执行不受信任的代码
  • 支持超时(例如防止无限循环)
  • 受限代码(无法访问 Node.js 方法)

The Halting Problem@maerics wrote about可以通过为代码设置超时来解决,尽管您不能在同一进程中这样做,因为例如 while(1) 会阻止它。沙箱通过使用子进程解决了这个问题。

因此,变量问题也应该得到解决,因为 Sandbox 位于子进程中,而不是主进程中。

如前所述,如果可能,您应该避免用户在您的服务器上运行任意代码,因为它会带来巨大安全风险。即使模块提供了此限制,您也应该至少以尽可能非特权的用户运行子进程。

关于javascript - 如何在沙箱环境中运行JavaScript函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14889393/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com