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

news2024/11/24 9:48:58

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

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

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 // 如果有内部npm包地址,则需要执行这一步
npm install 

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

关于npm audit使用

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

在这里插入图片描述
但这里,其实还有很多参数可以选:

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

npm audit --audit-level=moderate

希望以json格式输出:

npm audit --json

希望以html格式输出:

npm i -g npm-audit-html 
npm audit --json | npm-audit-html

这里其实又个坑,上面的html这里方法,很多地方都有,但很可能使用之后html长这样:
在这里插入图片描述
table是空的:
这里的原因是:
在这里插入图片描述
所以要改成:

npm i -g npm-audit-html@beta
npm audit --json | npm-audit-html@beta --output report.html

关于漏洞修复

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

npm audit fix

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

npm audit fix --package-lock-only

跳过 devDependencies 更新:

npm audit fix --only=prod

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

npm audit fix --force

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

npm audit fix --dry-run --json

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1069234.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

php 安装mongodb扩展模块,rdkafka模块

mongodb mongodb扩展下载 选择php版本,根据报错提示,选择扩展对应的版本选择非安全进程将php_mongodb.dll放到php/ext目录下修改php.ini配置,添加extensionphp_mongodb.dll开启php_mongodb扩展,重启服务php -m 查看是否开启成功…

vue3 -- ts封装 Turf.js地图常用方法

Turf.js中文网 地理空间分析库,处理各种地图算法 文档地址 安装 Turf 库 npm install @turf/turf创建src/hooks/useTurf.ts 文件1:获取线中心点 效果: 代码: useTurf.ts import * as turf from @turf/turf// 获取线中心点 export class CenterPointOfLine {

使用springboot服务端远程调试? 试试HTTP实现服务监听

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《初阶数据结构》《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 wi…

ws升级为wss

需求:项目中需要使用netty,本地测试的时候使用的是ws,然后要部署到服务器上,使用https连接,https下就不能用ws了,必须升级到wss 1.阿里云申请免费证书 2.保存证书到本地目录 3.修改代码 SslUtil 工具类…

kt6368A双模蓝牙芯片无法透传 可能是什么问题呢

一、问题简介- kt6368A蓝牙芯片无法透传 可能是什么问题呢? KT6368A蓝牙芯片,在使用上还是非常的简单,总共也就8个腿,焊接也是很容易的事情 出现不能透传,大概率有如下2点原因 硬件问题,比如&#xff1…

学习笔记|串口通信的基础知识|同步/异步|RS232|常见的串口软件的参数|STC32G单片机视频开发教程(冲哥)|第二十集:串口通信基础

目录 1.串口通信的基础知识串口通信(Serial Communication)同步/异步?全双工?常见的串口软件的参数 2.STC32的串口通信实现原理引脚选择:实现分时复用模式选择串口1模式1,模式1波特率计算公式 3.串口通信代码实现编写串口1通信程序…

C++深入学习part_2

面向对象思想 这一节Java里面都有类似的概念,比较简单,就不写的太啰嗦了。 首先是认识以前面向过程的思想: 而现在再来感受一下面向对象的思想: 这玩意儿学过Java的话应该是比较简单的,就不再赘述了。 类的定义 代…

数据安全防护:云访问安全代理(CASB)

云访问安全代理(Cloud Access Security Broker,CASB),是一款面向应用的数据防护服务,基于免应用开发改造的配置方式,提供数据加密、数据脱敏功能。数据加密支持国密算法,提供面向服务侧的字段级…

玄子Share- IDEA 2023 Web 热部署

玄子Share- IDEA 2023 热部署 添加热部署依赖 普通 Web 项目使用热部署插件需指定版本 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><version>3.1.3</version><!-…

nrm 安装教程(图文教程)

序&#xff1a; 1、都知道nvm解决的是node版本切换的问题&#xff0c;nrm 解决的是则是npm指向的问题。 2、雪狼的公众号&#xff1a;“程序员野区”&#xff0c;也许未来的莫一天&#xff0c;你会用到&#xff0c;不凡先进来瞅瞅公众号都分享了啥内容 正文&#xff1a; 1、安…

vue3+elementPlus:el-select选择器里添加按钮button

vue3elementPlus&#xff1a;el-select选择器里添加按钮button&#xff0c;在el-select的option后面添加button //html <el-select class"selectIcon" value-key"id" v-model"store.state.HeaderfilterText" multiple collapse-tagscollapse-…

力扣(LeetCode)2034. 股票价格波动(C++)

哈希表有序集合 请看本题解的分析&#xff1a; 题目的关键是四大操作&#xff0c;其中 current/maximum/minimum 明示我们&#xff0c;数据流应有快速找到一些数据的能力&#xff1a; 时间戳最大的股票所对应的价格&#xff0c;即题目所定义的最新股票价格在当前数据流节点&a…

Headless CMS(strapi)

Headless CMS(strapi) 玩了玩微信小程序的cms&#xff0c;感觉还挺好的&#xff0c;不过目前处于公测阶段&#xff0c;后续应该还是要收费的&#xff0c;不过这个操作还挺好的。文档地址 不过其获取图片的时候默认用到的是小城云开发环境的链接样式&#xff0c;如果用在公开网…

【Zookeeper专题】Zookeeper经典应用场景实战(二)

目录 前置知识课程内容一、Zookeeper分布式锁实战1.1 什么是分布式锁1.2 基于数据库设计思路1.3 基于Zookeeper设计思路一1.4 基于Zookeeper设计思路二1.5 Curator 可重入分布式锁工作流程1.6 总结 二、基于Zookeeper实现服务的注册与发现2.1 设计思路2.2 Zookeeper实现注册中心…

聊聊分布式架构04——RPC通信原理

目录 RPC通信的基本原理 RPC结构 手撸简陋版RPC 知识点梳理 1.Socket套接字通信机制 2.通信过程的序列化与反序列化 3.动态代理 4.反射 思维流程梳理 码起来 服务端时序图 服务端—Api与Provider模块 客户端时序图 RPC通信的基本原理 RPC&#xff08;Remote Proc…

算法通过村第十二关-字符串|黄金笔记|冲刺难题

文章目录 前言最长公共前缀纵向比较横向比较 字符串压缩问题表示数值的字符串总结 前言 提示&#xff1a;我有时候在想&#xff0c;我是真的不太需要其他人&#xff0c;还是因为跟他们在一起时没法自己&#xff0c;所以才保持距离。我们的交谈就像是平行而毫无交集的自言自语。…

高压功率放大器是什么东西

高压功率放大器是一种电子设备&#xff0c;用于将低功率信号放大到高功率水平。它通常由多个功率放大器组成&#xff0c;可以处理来自各种信号源的输入信号&#xff0c;并输出具有更大功率的信号。 高压功率放大器广泛应用于许多领域&#xff0c;包括无线通信、广播、雷达、医学…

Pytorch-学习记录-1-Tensor

1. 张量 (Tensor): 数学中指的是多维数组&#xff1b; torch.Tensor data: 被封装的 Tensor dtype: 张量的数据类型 shape: 张量的形状 device: 张量所在的设备&#xff0c;GPU/CPU requires_grad: 指示是否需要计算梯度 grad: data 的梯度 grad_fn: 创建 Tensor 的 Functio…

要多搞笑才能上B站热门?

自从B站开放竖屏模式之后&#xff0c;越来越多站外的优秀创作者加入B站。这其中搞笑UP主的数量大大增加&#xff0c;有很多竖屏UP主、短视频UP主在B站发光发热。 飞瓜数据&#xff08;B站版&#xff09;热门视频显示&#xff0c;近期热度最高的是来自UP主七颗猩猩QKXX发布的竖…

three.js点击模型实现模型边缘高亮选中效果

three.jsreact实现点击模型实现高亮选中效果 1、创建一个场景 let scene, camera, renderer, controls; let stats null; // 检测动画运行时的帧数 let clock new THREE.Clock(); // getDelta()方法获得两帧的时间间隔 let FPS 30; let renderT 1 / FPS; let timeS 0;con…