如何检查npm包的安全漏洞
本文主要讲述了:
- npm包的安全漏洞等级
- 检查漏洞
- 修复漏洞
- 提交漏洞报告
npm包的数量非常巨大,因为开发者的水平差异,难免存在大大小小的安全漏洞。
作为开发者,定期检查项目依赖包中存在的安全漏洞并及时升级修复版依赖是非常必要的。
npm包的漏洞等级
漏洞严重性从高到底排序:
- Critical(危急) 需要立即修复
- High(高) 尽可能快地修复
- Moderate(适中) 时间允许就修复
- Low(低) 随你自己什么时候修复
检查漏洞
在包里运行如下的命令可以检查漏洞。
#!/usr/bin/env bash npm audit
示例:
jquery@1.12.4
存在XSS漏洞,下面我们用这个例子来体验一下npm audit
命令。
#!/usr/bin/env bash # 创建并进入文件夹 mkdir learn_npm && cd learn_npm # 新建package.json npm init --yes # 安装1.12.4版本的jquery npm install jquery@1.12.4 # 审计 npm audit
修复漏洞
修复漏洞的方法就是升级依赖版本。根据新版本是否向后兼容,分为两种方式:
升级到向后兼容的新版本依赖
在包里运行如下的命令可以自动下载安装向后兼容的新版本依赖。
#!/usr/bin/env bash npm audit fix
升级到不向后兼容的新版本依赖
如果依赖开发者已经不愿维护旧版本,但在不向后兼容的新版本中修复了漏洞,此时我们也可以选择升级。
注意:升级到不向后兼容的新版本时要特别小心,这意味着依赖的调用逻辑可能需要重写。
#!/usr/bin/env bash npm audit fix --force
提交漏洞报告
实际上,漏洞并不是由npm检查出来的,npm只是提供了一个反馈的平台而已。
漏洞信息是全世界各地的开发者发现并反馈到npm平台的。
npm audit
所做的工作,只是检查项目中使用的依赖包是否存在漏洞反馈。如果有,发出警告。
换言之,一个没有漏洞反馈的依赖包,并不意味着绝对安全,可能只是没有人发现或反馈而已。