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

时间:2017-07-21 14:26:07

标签: javascript node.js jsdom

我使用jsdom使用Node.js应用加载网页。 有时,我没有获得完整的DOM,因为有些网页会在触发onload事件后动态加载内容。

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

  

jsdom沙箱不是万无一失的,而且在DOM内部运行的代码< s>脚本> s可以,如果它足够努力,可以访问Node.js环境,从而访问您的机器

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

1 个答案:

答案 0 :(得分:2)

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

你可以研究的事情:

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

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