Browse Source

升级 axios 漏洞

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

2
package.json

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

219
src/views/login.vue

@ -1,116 +1,131 @@
<template> <template>
<div class="login-page"> <div class="login-page">
<div class="login-content"> <div class="login-content">
<van-nav-bar> <van-nav-bar>
<template #title> <template #title>
<div class="title"> <div class="title">登录</div>
登录 </template>
</div> </van-nav-bar>
</template> <van-form @submit="onSubmit">
</van-nav-bar> <van-field
<van-form @submit="onSubmit"> v-model="loginParam.secretName"
<van-field v-model="loginParam.secretName" name="secretName" label="用户名" placeholder="用户名" name="secretName"
:rules="[{ required: true, message: '请填写用户名' }]"/> label="用户名"
<van-field v-model="loginParam.secretKey" type="password" name="secretKey" label="密码" placeholder="密码" placeholder="用户名"
:rules="[{ required: true, message: '请填写密码' }]"/> :rules="[{ required: true, message: '请填写用户名' }]"
<div style="margin: 0.42rem"> />
<van-button block type="primary" native-type="submit">登录</van-button> <van-field
</div> v-model="loginParam.secretKey"
</van-form> type="password"
<router-link to="/register" class="link">还没有账号,去注册</router-link> name="secretKey"
label="密码"
placeholder="密码"
:rules="[{ required: true, message: '请填写密码' }]"
/>
<div style="margin: 0.42rem">
<van-button block type="primary" native-type="submit"
>登录</van-button
>
</div> </div>
</van-form>
<router-link to="/register" class="link">还没有账号,去注册</router-link>
</div> </div>
</div>
</template> </template>
<script setup> <script setup>
import {reactive} from 'vue'; import { reactive } from "vue";
import {userLogin, testLogin} from '../api/Home'; import { userLogin, testLogin } from "../api/Home";
import CryptoJS from "crypto-js"; import CryptoJS from "crypto-js";
const {useCommon} = $globalStore; const { useCommon } = $globalStore;
const router = useRouter(); const router = useRouter();
const loginParam = reactive({ const loginParam = reactive({
secretName: "", secretName: "",
secretKey: "" secretKey: "",
}) });
const userLoginParam = {}; const userLoginParam = {};
userLoginParam.username = loginParam.username; userLoginParam.username = loginParam.username;
userLoginParam.password = loginParam.password; userLoginParam.password = loginParam.password;
const onSubmit = async (values) => { const onSubmit = async (values) => {
// await getGoodsnum(); // await getGoodsnum();
// await getLang(); // await getLang();
// values.secretName = values.name; // values.secretName = values.name;
values.secretKey = Encrypt(values.secretKey); values.secretKey = Encrypt(values.secretKey);
// return; // return;
// userLogin(values,success=>{ // userLogin(values,success=>{
testLogin({"secretName": loginParam.secretName, "secretKey": values.secretKey}, success => { testLogin(
if (success.success) { { secretName: loginParam.secretName, secretKey: values.secretKey },
//企业端 (success) => {
router.push({ name: "Home" }); if (success.success) {
//执法端 //企业端
// router.push({name: "enforceHome"}); router.push({ name: "Home" });
//设置全局变量 //执法端
useCommon.SET_USER_PHONENUMBER(success.data.phonenumber.toString()); // router.push({ name: "enforceHome" });
useCommon.SET_USER_ID(success.data.userId); //设置全局变量
useCommon.SET_TOKEN(success.data.token); useCommon.SET_USER_PHONENUMBER(success.data.phonenumber.toString());
// 监听uni-app发送的消息 useCommon.SET_USER_ID(success.data.userId);
window.addEventListener('message', (event) => { useCommon.SET_TOKEN(success.data.token);
console.log('Received message from uni-app:', event.data); // 监听uni-app发送的消息
// 向uni-app返回消息 window.addEventListener("message", (event) => {
window.parent.postMessage('Hello, uni-app!', '*'); console.log("Received message from uni-app:", event.data);
}); // 向uni-app返回消息
} else { window.parent.postMessage("Hello, uni-app!", "*");
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); } 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> </script>
<style lang="less" scoped> <style lang="less" scoped>
.login-page { .login-page {
width: 100%; width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
overflow: hidden; overflow: hidden;
background-image: url("~@/assets/images/login.jpg"); background-image: url("~@/assets/images/login.jpg");
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: cover; background-size: cover;
opacity: 0.9; opacity: 0.9;
.login-content { .login-content {
margin: auto; margin: auto;
padding: 0.27rem 0.27rem 0.52rem 0.27rem; padding: 0.27rem 0.27rem 0.52rem 0.27rem;
background-color: #fff; background-color: #fff;
border-radius: 0.27rem; border-radius: 0.27rem;
box-shadow: 0 0 0.27rem rgba(0, 0, 0, 0.2); box-shadow: 0 0 0.27rem rgba(0, 0, 0, 0.2);
opacity: 0.9; opacity: 0.9;
.title { .title {
font-size: 0.52rem; font-size: 0.52rem;
font-weight: 600; font-weight: 600;
}
}
.link {
font-size: 0.32rem;
color: #069;
float: right;
margin-right: 0.4rem;
}
} }
}
.link {
font-size: 0.32rem;
color: #069;
float: right;
margin-right: 0.4rem;
}
}
</style> </style>

Loading…
Cancel
Save