用于审核节点(Javascript)应用程序实现的工具

用于审核节点(Javascript)应用程序实现的工具,javascript,node.js,validation,security,Javascript,Node.js,Validation,Security,假设一个实质性的(MIT许可证)开源(节点)Javascript web应用程序 我想确定应用程序不会在互联网上泄露信息的信心。一种方法是阅读每一行并确保我理解它。这种详细的代码审查感觉有些过火 由于应用程序位于NAT/防火墙之后,因此可以确定实现不会启动任何远程连接。重要的是要考虑明显的直接启动连接(TCP/HTTP/HTTPS/FTP/SSH等)在源本身-和任何依赖关系…以及任何间接方式,例如,在操作过程中涉及客户端web浏览器 我并不担心应用程序是否不安全,因为它的访问控制可能会从提供访问

假设一个实质性的(MIT许可证)开源(节点)Javascript web应用程序

我想确定应用程序不会在互联网上泄露信息的信心。一种方法是阅读每一行并确保我理解它。这种详细的代码审查感觉有些过火

由于应用程序位于NAT/防火墙之后,因此可以确定实现不会启动任何远程连接。重要的是要考虑明显的直接启动连接(TCP/HTTP/HTTPS/FTP/SSH等)在源本身-和任何依赖关系…以及任何间接方式,例如,在操作过程中涉及客户端web浏览器

我并不担心应用程序是否不安全,因为它的访问控制可能会从提供访问的网络中出错。。。尽管我不反对对任何明显的缺陷进行警告

有没有工具可以让这种评估变得简单?沙箱方法可行吗?如果可行,什么方法适合创建这样的节点沙箱?

也许您可以尝试一下

我没有安装它的经验,但我的工作场所使用它来检查代码质量。

它将显示哪行代码不好,并给出如何修复它的建议


我记得在sonarqube中看到了一些与OWASP相关的东西,但还没有尝试过。

这个问题出人意料地广泛。你似乎在问:

  • 我的nodejs应用程序或其npm依赖项中是否嵌入了任何“特洛伊木马”。代码的开发人员是否潜入了任何可能泄露我的数据的恶意代码
  • 我的nodejs网络界面安全吗
  • 我的服务器(托管我的nodejs应用程序)对网络爬虫安全吗
  • 信息安全的第一条规则是:没有人可以窃取你不存储的信息。如果你不需要,就不要存储它

    关于特洛伊木马的情况,我对代码有以下建议:

  • 尽可能检查您自己的代码。查看代码的
    require()
    行是一个良好的开端;它会提醒您自己的模块可能使用出站网络
  • 使用
    npm audit
    对您的依赖项进行众包检查
  • 如果你的源代码在github上,他们会为你做一些
    npm审计
    工作,并用关于漏洞的电子邮件纠缠你
  • 重新设计您的nodejs web应用程序,以使用,而不是您现在使用的。由沃尔玛的偏执狂开发,它没有外部依赖性
  • 如果您有时间和/或金钱,请使用静态代码分析工具检查代码。索纳库贝、切克马克思等
  • 关于装配服务器以降低数据过滤速度

  • 监视或记录来自服务器的出站流量,并检查日志
  • 设置出站防火墙规则以禁止不属于应用程序的流量。在这里。小心:你可能做得太多,弄坏你需要的东西
  • 将敏感数据(可能在dbms中)保存在与web应用程序分离的机器上。使用白名单为该机器设置访问权限,该白名单只允许您的web应用程序连接,其他人不允许连接 关于您的web界面是否可以在允许合法用户的同时击退网络爬虫

  • 阅读反网络爬虫软件包,如。理解它们,然后使用它们
  • 考虑每隔几个月用burpscan之类的白帽黑客工具攻击你的web应用程序。那工具要花钱。它的开发人员定期更新它,为新发现的漏洞添加测试。它能检测到像这样或更多的东西
  • 请注意您的web服务器日志。(请注意,面向公共网络的web服务器会从世界各地获取许多探测器,以查看它们是否易受攻击。)
  • 使用检查TLS(https)的安全性
  • 关于您的服务器是否可以在允许合法管理访问的同时击退网络爬虫

  • 及时发布操作系统供应商的安全更新
  • 把你的机器锁上。不要运行任何您不需要的服务。例如,关闭web服务器上的smtp、ftp、dns、ntp和nfs服务(服务,而不是这些服务的客户端)。现在这相当容易,因为操作系统的基本服务器版本没有安装或运行这些东西
  • 使用
    nmap
    定期检查服务器的开放端口。其中一个描述了这一点。对于web服务器,只有ssh和https端口才应打开以进行最安全的设置
  • 让面向公众的服务器成为“牺牲品”。也就是说,这样您就可以从头开始构建服务器及其软件的新副本。这样,如果一个网络爬虫真的闯入了你的服务器,你可以烧掉它,然后启动另一个,迫使爬虫重新开始
  • 我提到了吗?及时发布操作系统供应商的安全更新
    我知道库贝。。。我认为协助代码审查是有意义的。。。但是我怀疑这不是验证没有信息泄漏的正确方法。例如,一个发送详细遥测信息的库不太可能被Sonarqube视为一个安全漏洞,但这正是我所关心的。。。如果有,谢谢你有趣的回复。我承认这个问题很广泛——但是,在你认为我要问的三件事中,第一件是我真正想解决的。我一定会调查npm审计。。。虽然感觉它的目的是寻找已知的漏洞,但感觉好像我需要识别“能够远程通信的代码”-