有没有办法在万无一失的沙箱中使用 jsdom?

Is there a way to use jsdom in a foolproof sandbox?

我正在使用 jsdom 通过我的 Node.js 应用程序加载网页。 有时,我无法获得完整的 DOM,因为某些网页在 onload 事件触发后使用脚本动态加载其内容。

jsdom 默认情况下停用这些脚本的执行,因为这会导致安全漏洞,如其文档中所述:

The jsdom sandbox is not foolproof, and code running inside the DOM's < script>s can, if it tries hard enough, get access to the Node.js environment, and thus to your machine

我想知道是否有办法使用一些变通方法使其万无一失?我是 Node.JS 开发的新手,因为它是单线程环境,所以我不确定如何创建安全沙箱。

NodeJS 没有这种开箱即用的安全性。如果您的 Node 引擎中 运行 不受信任的第 3 方代码,您将需要使用操作系统工具来隔离和保护它。

您可以研究的内容:

  • 使用 chroot 监狱。
  • 使用虚拟机。
  • 使用 Docker 容器。
  • 使用jailed沙盒库(自己没用过,但是口碑不错)

对这些方法及其局限性进行一些研究,看看哪种方法最适合您的目的。我认为虚拟机将提供最大的隔离和最小的错误机会,但它的开销最大。所有方法都可以奏效。