本文作者: jsweibo
本文链接: https://jsweibo.github.io/2019/04/25/%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5npm%E5%8C%85%E7%9A%84%E5%AE%89%E5%85%A8%E6%BC%8F%E6%B4%9E/
摘要
本文主要讲述了:
- npm 包的安全漏洞等级
- 检查漏洞
- 修复漏洞
- 提交漏洞报告
正文
npm 包的数量非常巨大,因为开发者的水平差异,难免存在大大小小的安全漏洞。
作为开发者,定期检查项目依赖包中存在的安全漏洞并及时升级修复版依赖是非常必要的。
npm 包的漏洞等级
漏洞严重性从高到底排序:
- Critical(危急) 需要立即修复
- High(高) 尽可能快地修复
- Moderate(适中) 时间允许就修复
- Low(低) 随你自己什么时候修复
检查漏洞
在包里运行如下的命令可以检查漏洞。
1 |
|
示例:
jquery@1.12.4
存在 XSS 漏洞,下面我们用这个例子来体验一下npm audit
命令。
1 |
|
修复漏洞
修复漏洞的方法就是升级依赖版本。根据新版本是否向后兼容,分为两种方式:
升级到向后兼容的新版本依赖
在包里运行如下的命令可以自动下载安装向后兼容的新版本依赖。
1 |
|
升级到不向后兼容的新版本依赖
如果依赖开发者已经不愿维护旧版本,但在不向后兼容的新版本中修复了漏洞,此时我们也可以选择升级。
注意:升级到不向后兼容的新版本时要特别小心,这意味着必须修改方法的调用方式。
1 |
|
提交漏洞报告
实际上,漏洞并不是由 npm 检查出来的,npm 只是提供了一个反馈的平台而已。
漏洞信息是全世界各地的开发者发现并反馈到 npm 平台的。
npm audit
所做的工作,只是检查项目中使用的依赖包是否存在漏洞反馈。如果有,发出警告。
换言之,一个没有漏洞反馈的依赖包,并不意味着绝对安全,可能只是没有人发现或反馈而已。
参考资料
- about-audit-reports
- auditing-package-dependencies-for-security-vulnerabilities
- reporting-a-vulnerability-in-an-npm-package
- 漏洞反馈地址