前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Node.js代码漏洞扫描工具介绍——npm audit

Node.js代码漏洞扫描工具介绍——npm audit

作者头像
粲然忧生
修改2023-10-16 21:07:45
6920
修改2023-10-16 21:07:45
举报
文章被收录于专栏:工程师的分享工程师的分享

npm audit

运行安全检查

主要作用:检查命令将项目中配置的依赖项的描述提交到默认注册中心,并要求报告已知漏洞。如果发现任何漏洞,则将计算影响和适当的补救措施。如果 fix 提供了参数,则将对包树应用补救措施。 具体参考:https://www.npmrc.cn/quick-start/about-npm.html

这里主要介绍如何使用漏洞扫描的功能

关于前置环境治理

事实上,很多的网上的解决方案都是直接运行npm audit命令,这个在研发的角度是没有问题的 但从研发效能的角度来看,还需要一些环境治理的工作: 比如说:我们在构建流水线的时候,需要拉取最新的代码 但拉取的代码中,除了业务代码外,还需要一些依赖包 在Node.js中,有三个重要的文件:node_modulespackage.jsonpackage-lock.json

node_modules :node_modules 文件夹中存放许多的模块文件及插件,node_modules是安装node后用来存放用包管理工具下载安装的包的文件夹。比如webpack、gulp、grunt这些工具。在node.js中模块与文件是一一对应的,也就是说一个node.js文件就是一个模块。

package.json:概念:package.json就是管理你本地安装的npm包,用于定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。”

使用场景:在拷贝项目时不需要拷贝node_modules文件夹,如果拷贝的话会很慢,所以需要用package.json来记录依赖版本号,可以解决安装的依赖与原项目依赖及版本保持一致的问题

package-lock.json:记录模块与模块之间的依赖关系,锁定包的版本,记录项目所依赖第三方包的树状结构和包的下载地址,加快重新安装的下载速度

具体可以参考:https://blog.csdn.net/weixin_48986139/article/details/124019530

在每一次代码拉取的过程中,研发同学基于多重开发的考虑,可能不会把本地的依赖包精确按时的上传到代码仓库,所以,在建立流水线的过程中,需要首选更新依赖包和模块与模块的依赖关系,再进行代码扫描:

代码语言:javascript
复制
rm -rf ./node_modules ./package-lock.json
npm cache clean --force
tnpm cache clean --force // 如果有内部npm包地址,则需要执行这一步
npm install --legacy-peer-deps && npx npm-force-resolutions
tnpm install --legacy-peer-deps && npx npm-force-resolutions // 如果有内部npm包地址,则需要执行这一步
npm install

其中如果没有tnpm,则需要把对应的包放入node_modules文件夹

关于npm audit使用

这个时候,依赖包基本上已经安装完毕了,然后即可运行npm audit

在这里插入图片描述
在这里插入图片描述

但这里,其实还有很多参数可以选:

比如:只关心中等以上漏洞:则可以添加:

代码语言:javascript
复制
npm audit --audit-level=moderate

希望以json格式输出:

代码语言:javascript
复制
npm audit --json

希望以html格式输出:

代码语言:javascript
复制
npm i -g npm-audit-html 
npm audit --json | npm-audit-html

这里其实又个坑,上面的html这里方法,很多地方都有,但很可能使用之后html长这样:

在这里插入图片描述
在这里插入图片描述

table是空的: 这里的原因是:

在这里插入图片描述
在这里插入图片描述

所以要改成:

代码语言:javascript
复制
npm i -g npm-audit-html@beta
npm audit --json | npm-audit-html@beta --output report.html

关于漏洞修复

扫描您的项目中的漏洞,并自动为有漏洞的依赖项安装任何兼容更新:

代码语言:javascript
复制
npm audit fix

在不修改节点模块的情况下运行 audit fix,但仍然更新 pkglock:

代码语言:javascript
复制
npm audit fix --package-lock-only

跳过 devDependencies 更新:

代码语言:javascript
复制
npm audit fix --only=prod

使用 audit fix 安装 SemVer-major 更新到顶级依赖项,而不仅仅是只引入 SemVer-compatible :

代码语言:javascript
复制
npm audit fix --force

进行试运行以了解 audit fix 将要做什么,并以 JSON 格式输出安装信息:

代码语言:javascript
复制
npm audit fix --dry-run --json

这里是一个npm audit fix的经典例子: https://www.jianshu.com/p/60591cfc6952

2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-10-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于前置环境治理
  • 关于npm audit使用
  • 关于漏洞修复
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档