Browse Source

升级 axios 漏洞

v4
蟑螂恶霸 4 months ago
parent
commit
efb72bde09
  1. 65
      package-lock.json
  2. 2
      package.json
  3. 219
      src/views/login.vue

65
package-lock.json

@ -9,7 +9,7 @@
"version": "0.1.0",
"dependencies": {
"@zxing/library": "^0.20.0",
"axios": "^1.6.7",
"axios": "^1.16.0",
"compressorjs": "^1.2.1",
"core-js": "^3.44.0",
"crawlee": "^3.12.0",
@ -4597,13 +4597,13 @@
}
},
"node_modules/axios": {
"version": "1.8.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz",
"integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==",
"version": "1.16.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.16.0.tgz",
"integrity": "sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==",
"dependencies": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
"follow-redirects": "^1.16.0",
"form-data": "^4.0.5",
"proxy-from-env": "^2.1.0"
}
},
"node_modules/babel-plugin-polyfill-corejs2": {
@ -6425,9 +6425,9 @@
}
},
"node_modules/follow-redirects": {
"version": "1.15.9",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
"integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
"version": "1.16.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
"integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==",
"funding": [
{
"type": "individual",
@ -6444,9 +6444,9 @@
}
},
"node_modules/form-data": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
"integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
"integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
@ -9156,9 +9156,12 @@
}
},
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz",
"integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==",
"engines": {
"node": ">=10"
}
},
"node_modules/prr": {
"version": "1.0.1",
@ -15509,13 +15512,13 @@
}
},
"axios": {
"version": "1.8.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz",
"integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==",
"version": "1.16.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.16.0.tgz",
"integrity": "sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==",
"requires": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
"follow-redirects": "^1.16.0",
"form-data": "^4.0.5",
"proxy-from-env": "^2.1.0"
}
},
"babel-plugin-polyfill-corejs2": {
@ -16847,14 +16850,14 @@
}
},
"follow-redirects": {
"version": "1.15.9",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
"integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ=="
"version": "1.16.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
"integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw=="
},
"form-data": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
"integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
"integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
@ -18801,9 +18804,9 @@
}
},
"proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz",
"integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA=="
},
"prr": {
"version": "1.0.1",

2
package.json

@ -16,7 +16,7 @@
},
"dependencies": {
"@zxing/library": "^0.20.0",
"axios": "^1.6.7",
"axios": "^1.16.0",
"compressorjs": "^1.2.1",
"core-js": "^3.44.0",
"crawlee": "^3.12.0",

219
src/views/login.vue

@ -1,116 +1,131 @@
<template>
<div class="login-page">
<div class="login-content">
<van-nav-bar>
<template #title>
<div class="title">
登录
</div>
</template>
</van-nav-bar>
<van-form @submit="onSubmit">
<van-field v-model="loginParam.secretName" name="secretName" label="用户名" placeholder="用户名"
:rules="[{ required: true, message: '请填写用户名' }]"/>
<van-field v-model="loginParam.secretKey" type="password" name="secretKey" label="密码" placeholder="密码"
:rules="[{ required: true, message: '请填写密码' }]"/>
<div style="margin: 0.42rem">
<van-button block type="primary" native-type="submit">登录</van-button>
</div>
</van-form>
<router-link to="/register" class="link">还没有账号,去注册</router-link>
<div class="login-page">
<div class="login-content">
<van-nav-bar>
<template #title>
<div class="title">登录</div>
</template>
</van-nav-bar>
<van-form @submit="onSubmit">
<van-field
v-model="loginParam.secretName"
name="secretName"
label="用户名"
placeholder="用户名"
:rules="[{ required: true, message: '请填写用户名' }]"
/>
<van-field
v-model="loginParam.secretKey"
type="password"
name="secretKey"
label="密码"
placeholder="密码"
:rules="[{ required: true, message: '请填写密码' }]"
/>
<div style="margin: 0.42rem">
<van-button block type="primary" native-type="submit"
>登录</van-button
>
</div>
</van-form>
<router-link to="/register" class="link">还没有账号,去注册</router-link>
</div>
</div>
</template>
<script setup>
import {reactive} from 'vue';
import {userLogin, testLogin} from '../api/Home';
import CryptoJS from "crypto-js";
import { reactive } from "vue";
import { userLogin, testLogin } from "../api/Home";
import CryptoJS from "crypto-js";
const {useCommon} = $globalStore;
const router = useRouter();
const loginParam = reactive({
secretName: "",
secretKey: ""
})
const userLoginParam = {};
userLoginParam.username = loginParam.username;
userLoginParam.password = loginParam.password;
const onSubmit = async (values) => {
// await getGoodsnum();
// await getLang();
// values.secretName = values.name;
values.secretKey = Encrypt(values.secretKey);
// return;
// userLogin(values,success=>{
testLogin({"secretName": loginParam.secretName, "secretKey": values.secretKey}, success => {
if (success.success) {
//
router.push({ name: "Home" });
//
// router.push({name: "enforceHome"});
//
useCommon.SET_USER_PHONENUMBER(success.data.phonenumber.toString());
useCommon.SET_USER_ID(success.data.userId);
useCommon.SET_TOKEN(success.data.token);
// uni-app
window.addEventListener('message', (event) => {
console.log('Received message from uni-app:', event.data);
// uni-app
window.parent.postMessage('Hello, uni-app!', '*');
});
} else {
console.log("登录失败")
}
}, error => {
console.log("登录失败")
})
};
const Encrypt = (passWord) => {
var keyStr = '1234567898745621';
var ivStr = keyStr;
var key = CryptoJS.enc.Utf8.parse(keyStr);
var iv = CryptoJS.enc.Utf8.parse(ivStr);
var srcs = CryptoJS.enc.Utf8.parse(passWord);
var encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.ZeroPadding
const { useCommon } = $globalStore;
const router = useRouter();
const loginParam = reactive({
secretName: "",
secretKey: "",
});
const userLoginParam = {};
userLoginParam.username = loginParam.username;
userLoginParam.password = loginParam.password;
const onSubmit = async (values) => {
// await getGoodsnum();
// await getLang();
// values.secretName = values.name;
values.secretKey = Encrypt(values.secretKey);
// return;
// userLogin(values,success=>{
testLogin(
{ secretName: loginParam.secretName, secretKey: values.secretKey },
(success) => {
if (success.success) {
//
router.push({ name: "Home" });
//
// router.push({ name: "enforceHome" });
//
useCommon.SET_USER_PHONENUMBER(success.data.phonenumber.toString());
useCommon.SET_USER_ID(success.data.userId);
useCommon.SET_TOKEN(success.data.token);
// uni-app
window.addEventListener("message", (event) => {
console.log("Received message from uni-app:", event.data);
// uni-app
window.parent.postMessage("Hello, uni-app!", "*");
});
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
}
} else {
console.log("登录失败");
}
},
(error) => {
console.log("登录失败");
},
);
};
const Encrypt = (passWord) => {
var keyStr = "1234567898745621";
var ivStr = keyStr;
var key = CryptoJS.enc.Utf8.parse(keyStr);
var iv = CryptoJS.enc.Utf8.parse(ivStr);
var srcs = CryptoJS.enc.Utf8.parse(passWord);
var encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.ZeroPadding,
});
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
};
</script>
<style lang="less" scoped>
.login-page {
width: 100%;
height: 100%;
display: flex;
overflow: hidden;
background-image: url("~@/assets/images/login.jpg");
background-repeat: no-repeat;
background-size: cover;
opacity: 0.9;
.login-page {
width: 100%;
height: 100%;
display: flex;
overflow: hidden;
background-image: url("~@/assets/images/login.jpg");
background-repeat: no-repeat;
background-size: cover;
opacity: 0.9;
.login-content {
margin: auto;
padding: 0.27rem 0.27rem 0.52rem 0.27rem;
background-color: #fff;
border-radius: 0.27rem;
box-shadow: 0 0 0.27rem rgba(0, 0, 0, 0.2);
opacity: 0.9;
.login-content {
margin: auto;
padding: 0.27rem 0.27rem 0.52rem 0.27rem;
background-color: #fff;
border-radius: 0.27rem;
box-shadow: 0 0 0.27rem rgba(0, 0, 0, 0.2);
opacity: 0.9;
.title {
font-size: 0.52rem;
font-weight: 600;
}
}
.link {
font-size: 0.32rem;
color: #069;
float: right;
margin-right: 0.4rem;
}
.title {
font-size: 0.52rem;
font-weight: 600;
}
}
.link {
font-size: 0.32rem;
color: #069;
float: right;
margin-right: 0.4rem;
}
}
</style>

Loading…
Cancel
Save