有没有办法在万无一失的沙箱中使用 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沙盒库(自己没用过,但是口碑不错)
对这些方法及其局限性进行一些研究,看看哪种方法最适合您的目的。我认为虚拟机将提供最大的隔离和最小的错误机会,但它的开销最大。所有方法都可以奏效。
我正在使用 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沙盒库(自己没用过,但是口碑不错)
对这些方法及其局限性进行一些研究,看看哪种方法最适合您的目的。我认为虚拟机将提供最大的隔离和最小的错误机会,但它的开销最大。所有方法都可以奏效。