当前位置: 首页 > news >正文

免费的发帖收录网站北京市专业网站制作企业

免费的发帖收录网站,北京市专业网站制作企业,广州优秀网站建设,样本之家登录网站在实际开发中,直接将用户的明文密码传输到后端存在较大安全风险。为了提高安全性,常见的做法是在前端发送前先对密码进行 MD5 哈希,再用 AES 对称加密 进行二次加密,然后使用 application/x-www-form-urlencoded 格式发送给后端。…

在实际开发中,直接将用户的明文密码传输到后端存在较大安全风险。为了提高安全性,常见的做法是在前端发送前先对密码进行 MD5 哈希,再用 AES 对称加密 进行二次加密,然后使用 application/x-www-form-urlencoded 格式发送给后端。本文将介绍如何在 Vue 项目中实现这一登录流程。


一、需求背景

后端要求登录接口接收三个字段:

  • account:用户名

  • password:先 MD5 再 AES 加密的密码

  • grant_type:固定值 'password'

接口需要使用 POST 方法,且 Content-Type 必须为 application/x-www-form-urlencoded


二、依赖安装

我们需要三个依赖库:

npm install qs js-md5 crypto-js
  • qs:将对象序列化为 key=value&key=value 格式

  • js-md5:实现 MD5 哈希算法

  • crypto-js:实现 AES 对称加密


三、AES 加密工具封装

创建 src/utils/encrypt.js

import CryptoJS from 'crypto-js'// 注意:key 和 iv 必须与后端保持一致
const key = CryptoJS.enc.Utf8.parse('1234567890abcdef') // 16 字节密钥
const iv = CryptoJS.enc.Utf8.parse('abcdef1234567890') // 16 字节向量export const aesEncryption = {encrypt(word) {const srcs = CryptoJS.enc.Utf8.parse(word)const encrypted = CryptoJS.AES.encrypt(srcs, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7})return encrypted.toString()},decrypt(ciphertext) {const decrypted = CryptoJS.AES.decrypt(ciphertext, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7})return decrypted.toString(CryptoJS.enc.Utf8)}
}

安全提示:生产环境中 keyiv 不建议直接写死在前端,可通过后端下发、动态生成等方式提高安全性。


四、改造登录接口

src/api/auth.js

import qs from 'qs'
import request from '@/utils/request'
import { httpUri } from '@/config'// 登录接口
export function login(data) {return request({url: `${httpUri}/api/oauth/Login`,method: 'post',headers: {'Content-Type': 'application/x-www-form-urlencoded'},data: qs.stringify(data) // 转为 x-www-form-urlencoded 格式})
}

五、调用示例

import md5 from 'js-md5'
import { aesEncryption } from '@/utils/encrypt'
import { login } from '@/api/auth'
import { ElMessage } from 'element-plus'// 假设这是 Vue3 中的表单
const form = ref({user: '',password: ''
})async function handleLogin() {if (!form.value.user || !form.value.password) {ElMessage.warning('请输入账号和密码')return}try {// 1. MD5 加密const md5Pwd = md5(form.value.password)// 2. AES 再加密const encryptedPwd = aesEncryption.encrypt(md5Pwd)// 3. 构造请求参数const payload = {account: form.value.user,password: encryptedPwd,grant_type: 'password'}// 4. 调用登录接口const res = await login(payload)// 5. 登录成功处理console.log('登录成功', res.data)ElMessage.success('登录成功')} catch (err) {console.error('登录失败', err)ElMessage.error(err?.response?.data?.message || '登录失败')}
}

六、执行流程图

用户输入密码↓MD5 哈希↓
AES 加密 (key + iv)↓
x-www-form-urlencoded 序列化↓
POST 请求发送到后端

七、总结

通过 MD5 + AES 双重加密,我们在一定程度上减少了密码在传输过程中的风险;配合 application/x-www-form-urlencoded 提交格式,可以更好地适配一些后端框架的解析方式。

完整实现中需要注意:

  1. keyiv 必须与后端保持一致。

  2. 加密并不能完全防止泄露,HTTPS 仍然是必不可少的传输加密手段。

  3. 如果想进一步简化调用,可以将加密逻辑放到 login 方法内部或请求拦截器中,调用时只传明文密码。

http://www.dtcms.com/a/468798.html

相关文章:

  • 织梦在线考试网站模板东莞公认的第一富人区
  • 门户网站的自身的特性好站站网站建设
  • 济南做网站的哪家好南昌网站建设在哪里
  • 作图网站都有哪些如何卸载和安装wordpress
  • 淮安建设工程协会网站查询系统青岛专业网站建设定制
  • 哪里有做配音的兼职网站公司网站里面页面链接怎么做
  • 建设企业网站的公司wordpress 免费外贸
  • 网站建设的互动性宜昌网站建设开发费用
  • 厦门高端网站案例查询网站
  • 网站推广的基本方法有哪些重庆的网络优化公司
  • akm建站系统个人网页设计作品纯html
  • 建网站的宽带多少钱asp网站免费完整源码
  • 陕西建设 节水 官方网站seo工具在线访问
  • 乐清市住房和城乡建设规划局网站网站描述设置
  • 可信赖的昆明网站建设wordpress私密页面
  • 网站开发申请网站结构和布局区别
  • 建立门户网站网站建设需求确认表
  • 做淘客网站用什么程序国际婚恋网站做翻译合法吗
  • 虚拟主机建网站怎么开网店卖东西
  • 一定要用c 做网站吗如何恢复wordpress主题初始内容
  • 怎么申请个人网站信息流广告是什么意思
  • 天津建设网站官网网站客户案例的
  • json做网站建网站相关知识
  • 重庆网站建设公司是什么意思简述网站建设的基本流程
  • 企业网站优化要多少钱模板王网页模板
  • 怎么做支付网站携程旅行的网站建设
  • 网站怎么做用密码电子商务网站有哪些功能
  • 婚庆网站模板北京装饰公司名称大全
  • tp框架做视频网站图片生成链接
  • 廊坊智能模板建站wordpress分享此文章