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

问题描述:

我使用jsdom来加载我的Node.js应用程序的网页。 有时,我没有得到完整的DOM,因为有些网页使用脚本在触发onload事件后动态加载其内容。有没有办法在万无一失的沙箱中使用jsdom?

jsdom停用这些脚本默认的执行,因为它会导致安全漏洞,因为他们的文档中指出:

的jsdom沙箱也不是万无一失的,和DOM的<脚本内部>正在竞选码可以,如果它努力尝试,就可以访问Node.js环境,从而访问您的机器

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

+0

在Linux上,您可以从子进程运行jsdom代码,并使其作为不同的用户执行,然后执行被锁定的主节点进程。 – Darkrum

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

事情你可以看看:

  • 使用chroot*。
  • 使用虚拟机。
  • 使用Docker容器。
  • 使用jailed沙箱库(自己没有用过,但它有很好的声誉)。

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

+0

谢谢slezica!我要研究这些方法中的每一种 – Randy