使用md5在vue中的axios请求时加密API问题

 更新时间:2023年01月19日 10:12:39   作者:yw00yw  
这篇文章主要介绍了使用md5在vue中的axios请求时加密API问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

md5在vue中的axios请求时加密API

1.安装axios

npm install axios

2.安装MD5

npm install js-md5

3.在vue项目中得main.js中全局引入

import axios from 'axios';
import md5 from 'js-md5';

4.在main.js中加入以下代码

const http = axios.create({ 	// 创建一个拥有通用配置的axios实例
 	timeout: 1000 * 30,	       // 请求超时时间(毫秒)
	withCredentials: true,	  // 是否携带cookie信息
	headers: {               // 头部信息
    	'Content-Type': 'application/json; charset=utf-8'
    }
})

http.interceptors.request.use(config => { 		//添加一个请求拦截器
	      // 请求头带上token	在发送请求之前做某事
	      let time = new Date().getTime();
	      config.params['time'] = time;
	      config.headers['sign'] = md5('与后台对应的字符串'+time);
	      return config
    }, error => {
    	  return Promise.reject(error)
})

Vue.prototype.$axios= http;

5.在组件中运用axios即可

this.$axios({
     method: 'POST',
     url:'项目的请求地址',
     params: params
}).then((res)=>{
    //成功的回调
    console.log(res);
},function(error){
    //失败的回调
    console.log(error);
})

接口安全要求

  • 防伪装攻击(案例:在公共网络环境中,第三方 有意或恶意 的调用我们的接口)
  • 防篡改攻击(案例:在公共网络环境中,请求头/查询字符串/内容 在传输过程被修改)
  • 防重放攻击(案例:在公共网络环境中,请求被截获,稍后被重放或多次重放)
  • 防数据信息泄漏(案例:截获用户登录请求,截获到账号、密码等)

接口参数签名 实现思路参考

必要的输入参数:

 

签名算法过程:

1. 对除签名外的所有请求参数按key做的升序排列,value无需编码。(假设当前时间的时间戳是12345678)

例如:有c=3,b=2,a=1 三个参,另加上时间戳后, 按key排序后为:a=1,b=2,c=3,_timestamp=12345678。

2. 把参数名和参数值连接成字符串,得到拼装字符:a1b2c3_timestamp12345678

3. 用申请到的appkey 连接到接拼装字符串头部和尾部,然后进行32位MD5加密,最后将到得MD5加密摘要转化成大写。

示例:假设appkey=test,md5(testa1b2c3_timestamp12345678test),取得MD5摘要值 C5F3EB5D7DC2748AED89E90AF00081E6 。

MD5加密算法:MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。对MD5加密算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成—个128位散列值。

MD5被广泛用于各种软件的密码认证和钥匙识别上。MD5用的是哈希函数,它的典型应用是对一段信息产生信息摘要,以防止被篡改。MD5的典型应用是对一段Message产生fingerprin指纹,以防止被“篡改”。如果再有—个第三方的认证机构,用MD5还可以防止文件作者的“抵赖”,这就是所谓的数字签名应用。MD5还广泛用于操作系统的登陆认证上,如UNIX、各类BSD系统登录密码、数字签名等诸多方

总结

1、接口调用方和接口提供方约定好统一的参数加密算法

2、接口调用方在调用时把加密后的_sign放在参数中去请求接口

3、接口提供方接到响应后,判断时间戳是不是在有效时间内(这个时间间隔根据你的安全范围可以是10分钟,5分钟,20秒等,过期失效,前提是需要保证接口提供方和调用方的服务器时间为准确的网络同步时间)

4、把参数中除了_sign以外的参数进行加密,然后把加密结果和传过来的_sign比较,相同则执行调用请求。

5、如果服务器和客户端的时间没有同步,可以返回错误的同时候在返回一个服务器的当前时间,客户端接收到该错误后再请求上一个接口,时间则传服务器刚刚返回的时间

6、如果用户还没有登录时,还没有token之类的唯一标识时,可以和服务端定义一个固定的标识来使用就行。

7、涉及到比较重要的信息,可以用AES对value进行加密,防止抓包拉取到上传的数据。

8、追求安全可以考虑https的双向验证模式 + 参数的sign签名的规则双重验证达到安全的请求后台。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • vue3 setup中父组件通过Ref调用子组件的方法(实例代码)

    vue3 setup中父组件通过Ref调用子组件的方法(实例代码)

    这篇文章主要介绍了vue3 setup中父组件通过Ref调用子组件的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • vue使用map代替Aarry数组循环遍历的方法

    vue使用map代替Aarry数组循环遍历的方法

    这篇文章主要介绍了vue使用map代替Aarry数组循环遍历的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • 详解Vue CLI 3.0脚手架如何mock数据

    详解Vue CLI 3.0脚手架如何mock数据

    这篇文章主要介绍了详解Vue CLI 3.0脚手架如何mock数据,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • Vue中mixins混入的介绍和使用详解

    Vue中mixins混入的介绍和使用详解

    mixins(混入)是一种分发 Vue 组件中可复用功能的非常灵活的方式,这篇文章主要为大家介绍了mixins混入的介绍和使用,需要的可以参考下
    2023-08-08
  • vue打包后生成一个配置文件可以修改IP

    vue打包后生成一个配置文件可以修改IP

    本文主要介绍了修改Vue项目运行的IP和端口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • vue中的数字滚动和翻牌器

    vue中的数字滚动和翻牌器

    这篇文章主要介绍了vue中的数字滚动和翻牌器,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-10-10
  • vue loadmore 组件滑动加载更多源码解析

    vue loadmore 组件滑动加载更多源码解析

    这篇文章主要介绍了vue loadmore 组件滑动加载更多源码解析,需要的朋友可以参考下
    2017-07-07
  • Vue路由重复点击报错问题及解决

    Vue路由重复点击报错问题及解决

    这篇文章主要介绍了Vue路由重复点击报错问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 为什么推荐使用JSX开发Vue3

    为什么推荐使用JSX开发Vue3

    这篇文章主要介绍了为什么推荐使用JSX开发Vue3,帮助大家更好的理解和使用vue框架,感兴趣的朋友可以了解下
    2020-12-12
  • Vue v2.5 调整和更新不完全问题

    Vue v2.5 调整和更新不完全问题

    这篇文章主要介绍了Vue v2.5 调整和更新不完全问题的相关资料,需要的朋友可以参考下
    2017-10-10

最新评论