如何升级Vue项目安全漏洞的过程总结

前言

随着技术的快速发展,Vue作为流行的JavaScript框架,被应用于前端开发,但是作为开发人员在使用Vue时,需要注意应用的安全性,以便于保护应用数据的安全并且防御常见的攻击行为。

本文介绍的是两个安全漏洞及其解决方法:

背景

这周上线的项目中被公司安全部门漏扫出来一些漏洞,其中有一个是vue版本过低的问题

还有一个是JavaScript框架升级漏洞(如图):

首先对第一个框架漏洞进行介绍:

1、 Vue版本过低

项目之前用的版本是2.6.10,下面是给出的漏洞风险分析

风险分析

vue版本2.6.10存在以下漏洞:将 vue-server-renderer 对serialize-javascript的依赖提升到2.1.2

当时看到这个分析的时候,我先进入安全人员给的链接地址,进行查看官方是哪个版本进行的修复处理的这个漏洞,(2.6.11这个版本进行了修复) ,我一看简单直接去修改package.json 直接换成 "vue": "^2.6.11",紧接着就操作了依赖安装命令:

js 复制代码
npm i 

安装依赖的过程,没有问题,启动命令npm run dev后 报错了,提示如下截图

出现这个问题是与Vue版本不匹配,那时候package.json配置文件,并没有显示这个模板包依赖,进行下载安装后升级到了相同的版本,

js 复制代码
npm i vue-template-compiler@xxxxxx --save  
XXX代表版本号

问题至此解决,这是第一个问题。 接下来处理第二个YUI漏洞修复

二、YUI漏洞

首先给大家看看安全这边给出的风险分析

YUI版本2.9.0存在以下漏洞: YUI 2.8.0 至 2.9.0 的 Flash 组件基础结构中存在跨站脚本 (XSS) 漏洞,如低于 4.0.9 的 Bugzilla 3.7.x 和 4.0.x、低于 4.2.4 的 4.1.x 和 4.2.x 以及低于 4.4rc1 的 4.3.x 和 4.4.x,允许远程攻击者通过与 swfstore.swf 相关的向量注入任意 Web 脚本或 HTML,该漏洞与 CVE-2010-4209 类似等

我看到这个的时候,我全局在代码中搜索 YUI,确实搜到了一段注释

点击进入这个文件后我查看了一下文件路径,发现他在node_modules>jsencrypt中, 网上搜索了一下YUI2 的版本漏洞结果也指出了漏洞问题

YUI是什么

YUI是一套用于构建丰富交互Web应用程序的JavaScript和CSS库。YUI 提供了一系列工具和组件,旨在简化Web开发人员创建动态、可交互的用户界面的过程。

经过查询发现,jsencrypt中只使用了lang.extend方法,并没有进行其他操作,那也就是说安全只是扫描了YUI版本号作为安全漏洞依据。

解决方法:

删除掉YUI版本这块的注释即可。

方法一: 网上搜的办法大部分是使用压缩后(不含注释)的文件:node_modules\jsencrypt\bin\jsencrypt.min.js

js 复制代码
// 旧的引入方式 
import JSEncrypt from 'jsencrypt' 
// 新的引入方式 
import JSEncrypt from 'jsencrypt/bin/jsencrypt.min'

方法二:优化vue.config.js打包配置文件

在打包环节删除注释 需要在vue.config.js中配置:

js 复制代码
chainWebpack(config) {
		config.optimization.minimizer('terser').tap(args=>{
			args[0].terserOptions.output={
				comments:false
			}
			return args
		})
	},

这个方法报错了,报错为config.optimization.minimizer(...).tap is not a function, 后来百度又安装了terser-webpack-plugin

js 复制代码
npm install terser-webpack-plugin

方法三:public/index.html中引入jsencrypt.min.js

js 复制代码
public/index.html中引入jsencrypt.min.js (下载到本地放到public/js文件中)
卸载安装的jsencrypt (npm uninstall jsencrypt)  
删除项目中对jsencrypt包的引用

方法二、方法三都试了可以解决问题、成功去掉了注释。

总结

以上为个人经验,希望能给大家一个参考,如有Vue其他安全问题,欢迎大家多多留言。

相关推荐
百万蹄蹄向前冲10 分钟前
组建百万前端梦之队-计算机大学生竞赛发展蓝图
前端·vue.js·掘金社区
云隙阳光i23 分钟前
实现手机手势签字功能
前端·javascript·vue.js
imkaifan43 分钟前
vue2升级Vue3--native、对inheritAttrs作用做以解释、声明的prop属性和未声明prop的属性
前端·vue.js·native修饰符·inheritattrs作用·声明的prop属性·未声明prop的属性
小程序设计43 分钟前
【2025】基于springboot+vue的宠物领养管理系统(源码、万字文档、图文修改、调试答疑)
vue.js·spring boot·宠物
小程序设计1 小时前
【2025】基于springboot+vue的体育场馆预约管理系统(源码、万字文档、图文修改、调试答疑)
vue.js·spring boot·后端
柠檬树^-^2 小时前
app.config.globalProperties
前端·javascript·vue.js
1024小神2 小时前
vue/react/vite前端项目打包的时候加上时间最简单版本,防止后端扯皮
前端·vue.js·react.js
起来改bug2 小时前
【pptx-preview】react+pptx预览
javascript·react.js·pptx
马可奥勒留2 小时前
声明
javascript
轻口味3 小时前
Vue.js 与 RESTful API 集成之使用 Axios 请求数据
前端·vue.js·restful