Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 通过PhantomJS访问未知/不受信任的网站会感染我的系统吗?_Security_Phantomjs - Fatal编程技术网

Security 通过PhantomJS访问未知/不受信任的网站会感染我的系统吗?

Security 通过PhantomJS访问未知/不受信任的网站会感染我的系统吗?,security,phantomjs,Security,Phantomjs,通过使用phantomJS访问网站,我的系统会受到感染吗?我不知道/不信任我正在访问的网站。如果是这样,如何防止它/避免损坏?从技术上讲,这不是不可能的 PhantomJS使用WebKit作为其web浏览器引擎(与Safari和许多其他浏览器相同,包括早期版本的Chrome),并且可以针对任何版本的WebKit进行编译。这意味着WebKit用于解析和内部呈现网页 如果您的PhantomJS版本使用的WebKit版本易受攻击,则PhantomJS也将易受攻击。如果WebKit中存在缓冲区溢出或类似

通过使用phantomJS访问网站,我的系统会受到感染吗?我不知道/不信任我正在访问的网站。如果是这样,如何防止它/避免损坏?

从技术上讲,这不是不可能的

PhantomJS使用WebKit作为其web浏览器引擎(与Safari和许多其他浏览器相同,包括早期版本的Chrome),并且可以针对任何版本的WebKit进行编译。这意味着WebKit用于解析和内部呈现网页

如果您的PhantomJS版本使用的WebKit版本易受攻击,则PhantomJS也将易受攻击。如果WebKit中存在缓冲区溢出或类似的远程代码执行,PhantomJS中也可能会利用这些漏洞,从而导致恶意网站能够在您的计算机上运行代码。这些类型的缺陷(严重程度类似于可利用的远程代码执行)并不常见,但有时也会发生。请注意,WebKit的所有其他低风险漏洞也会影响使用易受攻击的WebKit版本编译的任何PhantomJS版本。更重要的是,许多项目都使用WebKit,因此,对于攻击者来说,查找和利用WebKit漏洞可能是值得的

PhantomJS本身也可能容易受到攻击,但真正危险的是在访问网站时解析其他人编写的代码,这是由WebKit完成的。我认为,通过访问过的网站利用PhantomJS中其他支持代码中的缺陷会更加困难。不是说这不可能,但我认为可能性很低

至于如何防止这种情况。。。最重要的是使用PhantomJS版本,该版本是根据最新版本的WebKit编译的。如果WebKit版本或PhantomJS版本都没有已知的漏洞,那么您可以继续使用(当然,总有零天的时间)

如果你真的很担心,你可以单独运行PhantomJS。您可以设置类似于chrooted环境或整个专用虚拟机的东西。在后一种情况下,攻击者必须在一个完全独立的攻击中破坏虚拟机监控程序,这可能不是不可能的,但可能很难,并且与PhantomJS中利用的任何漏洞都有很大不同

当然,这也取决于你想要保护什么。如果您担心运行PhantomJS的客户机会出现问题,那么隔离运行它可能就足以满足您的场景。如果PhantomJS是更大应用程序的一部分,并且您担心攻击者能够访问该特定应用程序中的数据,那么您显然无法将PhantomJS与包含数据的实际应用程序隔离运行,因此VM将不会有帮助


因此,底线是,是的,它可能发生,但可能性不大,你需要什么对策取决于一些因素,包括风险(你可能会损失什么)和你的威胁模型(你想防范什么)。

谢谢!我需要抓取100k的随机(=不受信任的,可能是恶意的)网站主页,并将有关它们的一些信息保存到数据库中。它将运行的机器将包含其他内容的凭据,数据库也将包含重要的内容。因此,我不希望有人访问此数据库/文件系统。我不确定如何保护此设置,我将尝试使用类似于app armor之类的东西,将数据写入磁盘,然后使用另一个脚本将数据写入数据库。AppArmor很好,这正是我所说的类似于chroot的类型。有严格的规则,这绝对有帮助。确保为设置中的每个组件分配最少的权限,例如,PhantomJS只需要能够写入几个文件或单个数据库表,并且可能只需要读取几个库。然后,任何进一步分析数据的组件都可以验证其输入(即PhantomJS的输出)。我认为对PhantomJS组件使用具有严格规则的AppArmor将大大降低风险。这很麻烦,但我用了几个小时就把它修好了。在ubuntu上做起来更容易。不过,ArchLinux需要重建内核。我创建了一个共享文件夹,主机将URL放在那里,然后使用
lxc attach-n name--command
(它正在阻止)调用容器内的脚本,等待脚本获取URL,对所有URL进行爬网,并将结果保存在该文件夹中的文件。然后,主机读取该文件和ta daa。我希望这足以阻止感染。或者至少阻止一种自主(没有人类攻击者)感染。