Node.js代码漏洞扫描工具介绍——npm audit
npm audit
运行安全检查
主要作用:检查命令将项目中配置的依赖项的描述提交到默认注册中心,并要求报告已知漏洞。如果发现任何漏洞,则将计算影响和适当的补救措施。如果 fix 提供了参数,则将对包树应用补救措施。
具体参考:https://www.npmrc.cn/quick-start/about-npm.html
这里主要介绍如何使用漏洞扫描的功能
关于前置环境治理
事实上,很多的网上的解决方案都是直接运行npm audit命令,这个在研发的角度是没有问题的
但从研发效能的角度来看,还需要一些环境治理的工作:
比如说:我们在构建流水线的时候,需要拉取最新的代码
但拉取的代码中,除了业务代码外,还需要一些依赖包
在Node.js中,有三个重要的文件:node_modules 、package.json与 package-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 --legacy-peer-deps && npx npm-force-resolutions // 如果有内部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
相关文章:
Node.js代码漏洞扫描工具介绍——npm audit
npm audit 运行安全检查 主要作用:检查命令将项目中配置的依赖项的描述提交到默认注册中心,并要求报告已知漏洞。如果发现任何漏洞,则将计算影响和适当的补救措施。如果 fix 提供了参数,则将对包树应用补救措施。 具体参考&#x…...
node.js知识系列(3)-每天了解一点
目录 1. Express.js 中的中间件2. 处理路由和请求3. RESTful 路由4. 身份验证和授权5. 视图引擎6. 错误处理中间件7. 文件上传处理8. Cookie 和 Session 管理9. 路由参数和查询参数10. 处理跨域请求(CORS) 👍 点赞,你的认可是我创…...
Zabbix监控系统 自定义监控项、自动发现与自动注册
Zabbix监控系统 自定义监控项、自动发现与自动注册 一、自定义监控内容部署实例二、zabbix 自动发现与自动注册部署实例2.1 部署zabbix自动发现 一、自定义监控内容部署实例 案列:自定义监控客户端服务器登录的人数 需求:限制登录人数不超过 3 个&#…...
Python信号之分享
在了解了Linux的信号基础之后,Python标准库中的signal包就很容易学习和理解。signal包负责在Python程序内部处理信号,典型的操作包括预设信号处理函数,暂停并等待信号,以及定时发出SIGALRM等。要注意,signal包主要是针…...
环信web、uniapp、微信小程序SDK报错详解---登录篇
项目场景: 记录对接环信sdk时遇到的一系列问题,总结一下避免大家再次踩坑。这里主要针对于web、uniapp、微信小程序在对接环信sdk时遇到的问题。主要针对报错400、404、401、40 (一) 登录用户报400 原因分析: 从console控制台输出及networ…...
DAZ To UMA⭐五.模型在Blender中的配置教程
文章目录 🟥 创建符合UMA的材质球属性1️⃣ 合并材质球🎁 选择材质球🎁 合并材质球🎁 删除多余材质球2️⃣ 将身体按材质球拆分🎁 进入身体编辑模式🎁 全选身体🎁 按材质分割身体🎁 重命名不同部位3️⃣ 将其余部位进行拆分🟧 更正选择缩放🟩 更新骨骼结构…...
网络安全工具汇总
网络安全工具汇总 1. 前言1.1. 工具提供 2. 漏洞库3. 杂项3.1. topology-scanner3.2. MDUT3.3. 404 4. 插件工具4.1. 浏览器插件4.1.1. Heimdallr4.1.2. HackTools4.1.3. SwitchyOmega4.1.4. fofa_view4.1.5. mitaka 4.2. CS插件4.2.1. taowu-cobalt_strike4.2.2. OLa4.2.3. Z1…...
day-65 代码随想录算法训练营(19)图论 part 04
463.岛屿的周长 分析: 1.陆地的旁边是海面,存在周长2.陆地在边界上,存在周长 思路一:深度优先遍历 1.通过记录访问情况来访问数据 class Solution { public:int direct[4][2]{{0,1},{0,-1},{1,0},{-1,0}};int res0;void dfs(…...
C++ - 完美语义(右值引用的中篇) - lambda表达式
前言 之前对右值引用的理解,用使用场景做了详细说明,具体看博客:C - 右值引用 和 移动拷贝-CSDN博客 在 有值引用 当中还有一个 完美转发,请看本篇博客。 完美转发 我们现在看这个例子: void Fun(int& x) { …...
常见排序算法详解
目录 排序的相关概念 排序: 稳定性: 内部排序: 外部排序: 常见的排序: 常见排序算法的实现 插入排序: 基本思想: 直…...
监控搭建-Prometheus
监控搭建-Prometheus 1、背景2、目标3、选型4、Prometheus4.1、介绍4.2、架构4.3、构件4.4、运行机制4.5、环境介绍4.6、数据准备4.7、网络策略4.7.1、主机端口放行4.7.2、设备端口放行 4.8、部署4.9、验证4.10、配置 1、背景 随着项目信息化进程的推进,操作系统、…...
指纹浏览器开发指南-EasyBR
想开发一款指纹浏览器,指纹浏览器名字叫做EasyBR,大致构思了下开发的步骤。 EasyBR指纹浏览器开发指南: 后台技术、前端技术和指纹修改 简介: EasyBR指纹浏览器是一款旨在提供个性化服务和广告定位的浏览器,通过收…...
qml入门
window import QtQuick 2.15 import QtQuick.Window 2.15 import QtQuick.Controls 2.5Window { //root控件,父窗口是主界面width: 640height: 480visible: true//相对于父控件的偏移量x: 100y:100minimumWidth: 400 //最小宽度minimumHeight: 300 //最小高度ma…...
一文熟练使用python修改Excel中的数据
使用python修改Excel中的内容 1.初级修改 1.1 openpyxl库的功能: openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,例如Xlwings。openpyxl是一个比较综合的工具,能…...
java Spring Boot在配置文件中关闭热部署
之前更大家一起搭建了一个热部署的开发环境 但是 大家要清楚一个情况 我们线上程序运行突然内部发生变化这是不可能的。 所以 他就只会对我们开发环境有效 是否开启 我们可以通过 application配置文件来完成 我这里是yml格式的 参考代码如下 spring:devtools:restart:enabled…...
【物联网】Arduino+ESP8266物联网开发(一):开发环境搭建 安装Arduino和驱动
ESP8266物联网开发 1.开发环境安装 开发软件下载地址: 链接: https://pan.baidu.com/s/1BaOY7kWTvh4Obobj64OHyA?pwd3qv8 提取码: 3qv8 1.1 安装驱动 将ESP8266连接到电脑上,安装ESP8266驱动CP210x 安装成功后,打开设备管理器,…...
自定义UI对象转流程节点
自定义UI对象转流程节点 实体自定义对象转bpmn activitiy学习 (动态加签,动态流程图,指定节点跳转,指定多人节点跳转) 前端页面仿的这个 提供一个思路 实体 ActivitiValueVo import io.swagger.annotations.ApiModel; import io.swagger.a…...
P1-P5_动手学深度学习-pytorch(李沐版,粗浅的笔记)
目录 预告 1.学习深度学习的关键是动手 2.什么是《动手学深度学习》 3.曾经推出的版本(含github链接) 一、课程安排 1.目标 2.内容 3.上课形式 4.你将学到什么 5.资源 二、深度学习的介绍 1.AI地图 2.深度学习在一些应用上…...
Android Studio修改模拟器AVD Manger目录
Android Studio修改虚拟机AVD Manger目录 1、在AS的设备管理器Device Manager中删除原来创建的所有虚拟机(Android Virtual Device); 2、新建一个自定义的AVD目录,例如:D:\Android\AndroidAVD 3、在高级系统设置中增加…...
STM32--MQ2烟雾传感器
本文主要介绍STM32F103C8T6和烟雾传感器模块的控制算法 简介 烟雾模块选用MQ-2气体传感器,根据传感器的电导率随空气中可燃气体浓度的增加而增大的特性检测空气中可燃气体,然后将电导率的变化转换成对应的电信号 MQ系列烟雾传感分类如下: 该…...
从混乱到有序:ERP系统革新如何优化企业资源配置
ERP系统革新,助力企业资源配置达到最优状态在当今竞争激烈的商业环境中,企业要想脱颖而出,实现可持续发展,高效的资源配置是关键。而ERP(企业资源计划)系统的革新,正成为众多企业提升资源配置效…...
如何永久保存微信聊天记忆:WeChatMsg本地数据管理终极指南
如何永久保存微信聊天记忆:WeChatMsg本地数据管理终极指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/W…...
新手零基础入门,快马ai带你三步搞定win10下的opencl开发环境
新手零基础入门,快马AI带你三步搞定Win10下的OpenCL开发环境 最近想学习GPU并行计算,发现OpenCL是个不错的入门选择。但作为新手,在Windows 10上配置开发环境时遇到了不少坑。经过一番摸索,终于找到了简单高效的解决方案…...
暗黑3一键宏终极指南:D3keyHelper让你的刷图效率翻倍
暗黑3一键宏终极指南:D3keyHelper让你的刷图效率翻倍 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 还在为暗黑3中重复的技能按键感到疲…...
PyTorch 2.8镜像实战解析:RTX 4090D上Stable Video Diffusion推理提速实测
PyTorch 2.8镜像实战解析:RTX 4090D上Stable Video Diffusion推理提速实测 1. 镜像环境深度解析 1.1 硬件适配优化方案 这个PyTorch 2.8镜像针对RTX 4090D显卡进行了全方位优化,就像给赛车手量身定制了高性能装备。24GB显存的设计让大模型推理不再捉襟…...
百度网盘秒传链接网页工具终极指南:全平台免费极速转存方案
百度网盘秒传链接网页工具终极指南:全平台免费极速转存方案 【免费下载链接】baidupan-rapidupload 百度网盘秒传链接转存/生成/转换 网页工具 (全平台可用) 项目地址: https://gitcode.com/gh_mirrors/bai/baidupan-rapidupload 还在为百度网盘资源分享的繁…...
工业机器人离线编程与仿真——RobotStudio基础学习3.27
工业机器人离线编程与仿真——RobotStudio基础学习 一、工业机器人离线编程认知 1.1 工业机器人常用编程方法 工业机器人主流编程方法分为示教编程和离线编程两类,二者核心差异体现在编程环境、对生产的影响等方面,具体对比见下表: 示教编…...
SDXL-Turbo在虚拟现实内容创作中的应用
SDXL-Turbo在虚拟现实内容创作中的应用 1. 引言 虚拟现实内容开发一直面临着一个核心痛点:高质量素材的制作既耗时又费力。传统的VR环境创建需要美术人员手动绘制纹理、设计贴图,一个简单的场景可能就需要数天甚至数周的工作量。 想象一下这样的场景&…...
别再傻等下载了!用ISO镜像装VS2015,教你手动复制packages文件夹绕过报错
突破VS2015离线安装困境:手动复制packages文件夹的终极指南 当你在一个网络受限的环境中尝试安装Visual Studio 2015时,可能会遇到一个令人沮丧的问题——安装程序反复提示"安装包丢失或损坏"。这种情况尤其常见于使用ISO镜像文件进行离线安装…...
Qwen3-TTS语音合成5分钟快速部署:10种语言+方言一键搞定
Qwen3-TTS语音合成5分钟快速部署:10种语言方言一键搞定 1. 快速部署指南 1.1 系统环境准备 在开始前,请确保您的系统满足以下基本要求: 操作系统:支持Linux/Windows/macOSPython版本:3.8-3.10内存:至少…...
