使用md5在vue中的axios请求时加密API_axios加密是什么样的-程序员宅基地

技术标签: 安全  vue  加密  md5  

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. 防伪装攻击(案例:在公共网络环境中,第三方 有意或恶意 的调用我们的接口)

  2. 防篡改攻击(案例:在公共网络环境中,请求头/查询字符串/内容 在传输过程被修改)

  3. 防重放攻击(案例:在公共网络环境中,请求被截获,稍后被重放或多次重放)

  4. 防数据信息泄漏(案例:截获用户登录请求,截获到账号、密码等)

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

必要的输入参数:
在这里插入图片描述
签名算法过程:

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

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

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

  2. 用申请到的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签名的规则双重验证达到安全的请求后台。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yw00yw/article/details/86641566

智能推荐

信息检索的过去 当前 未来-------浅层分析报告_信息检索的未来发展-程序员宅基地

文章浏览阅读1.2k次。关键字:信息检索;信息的专业分工;专业化的信息垂直供应;信息的商品化;商品化信息的信息;信息加工融合搜索过去:信息少,我们只须到163这样的网站上发发邮件,看看新闻,浏览一下图片即可满足我们的需求。那时,信息少,上网叫冲浪。是个时髦新鲜的玩意。人们不需要关注太多,因为网络还很远。对生产,工作,学习,生活还产生不了多大的影响。当前:网络是必须的一个世界。它使得信息在秒级概念下传递。信..._信息检索的未来发展

POJ3259-JAVA语言描述-Bellman_Ford算法_poj3259java-程序员宅基地

文章浏览阅读739次。读懂题意真难,时间都浪费在理解题意上面了。然后,发现,,这又是一个水题!分分钟撸完了!!!!引用这里的解释吧我就不多加赘述了!给你们解释下输入案例数据也许会更清晰的哟!下面看代码,注释很详细!!若有bug,不足,望悉心指出,thanks!!!!import java.io.BufferedInputStream;import java.util.Scanner;/_poj3259java

ARM中断体系结构(以S3C2440为例)_svc模式 sys模式 irq模式-程序员宅基地

文章浏览阅读448次。本文参考韦东山嵌入式视频一、ARM体系CPU工作模式1、用户模式(usr)2、快速中断模式(fiq)3、中断模式(irq)4、管理模式(svc)5、数据访问终止模式(abt)6、系统模式(sys)7、未定义指令中止模式(und)①每种工作模式有不同的寄存器:一共有37个32位寄存器(以ARM920T CPU为例,在ARM状态下(ARM体系的CPU有两种工作状态)),②有不同的权限 :配合MMU使用③有不同的出发条件:例如上电后处于管理模式 发生中断进入irq模式等二、异常与中断1_svc模式 sys模式 irq模式

HTML+CSS+JavaScript+ServerSQL2019+IE浏览器实现食堂管理系统(点菜、查询、充值余等等)_html + css + javascript点餐系统-程序员宅基地

文章浏览阅读923次。然后会跳转到点餐界面,数据都是从数据库里调出来的,菜品,套餐,用户信息都是数据库中的表信息。我是一个大二的学生,课设选了一个食堂餐厅管理系统,但是时间有限,所以写的不是很好,随手分享一下,互相学习。点击提交订单,就会先判断是否登录,未登录就会提示你先登录,登录了则扣费并提示支付成功。然后就可以点餐了,前提是余额足够,不够也不行,会提示失败,需要充值。管理员还没来得及写,本来是想写一个菜品增删改查的,感兴趣的可以自己发挥。我没什么美感,所以界面做的不是很好看,请各位见谅,凑合着看。_html + css + javascript点餐系统

java 删除linkedlist链表中重复元素_java linkedlist中删除重复元素-程序员宅基地

文章浏览阅读5.5k次。题目:Given a sorted linked list, delete all duplicates such that each element appear only once.For example,Given 1->1->2, return 1->2.Given 1->1->2->3->3, return 1->2->3. 算法如下:/** * Definition for sin_java linkedlist中删除重复元素

kaptcha生成验证码_com.github.axet-程序员宅基地

文章浏览阅读1.5k次。Meven的pom.xml中加入 com.github.axet kaptcha 0.0.9Spring中声明

随便推点

word转pdf出现空白页||去除PDF中的指定页_为什么转pdf后多了空白页-程序员宅基地

文章浏览阅读3.7k次。最近在搞毕业论文,一个事情很让人头大:明明只有51页的论文,可word右下角显示52页上网查了一下,大致原因可能是分节符或是奇偶页不同造成的,因为封面不能加页码,而且中英文的摘要页码和正文页码也要单独标记,可我的中英文摘要刚好是奇数页,3页,word会默认在奇数页后面补充空白页(应该是方便双面打印的吧)这样,我的中英文摘要就变成四页了,多的那一页在word中可能会显示出来,也可能不显示,但..._为什么转pdf后多了空白页

MFC中获取文件路径和获取文件路径_mfc获取文件路径不要文件名-程序员宅基地

文章浏览阅读2k次。一、获取文件路径二、获取文件夹路径_mfc获取文件路径不要文件名

关于Unity中Shader的使用-程序员宅基地

文章浏览阅读342次。在游戏的开发过程中,程序员不太会自己去写shader,因为写起来很麻烦,而且只有Unity会报错,编译器也没有什么提示。通常是拿别人的shader改一改,当然,程序员还是要能看懂和会一点shader Unity坐标系转换1: transform.localToWorldMatrix 局部转世界的矩阵;2: transfrom.worldToLocalMatrix 世界坐标转局部坐标矩..._unity resources下的shader

golang kite 环境搭建_c:\go\src\golang.org\x\sys\windows (from $goroot)-程序员宅基地

文章浏览阅读2.6k次。1、安装git2、直接导入第三方包:go get github.com/koding/kite3、然后会有提示:package golang.org/x/crypto/ssh/terminal: unrecognized import path "golang.org/x/crypto/ssh/terminal"4、这时候直接从git上clone:git clone ..._c:\go\src\golang.org\x\sys\windows (from $goroot)

微信小程序背景图片设置_微信小程序 css background-image-程序员宅基地

文章浏览阅读1.6k次,点赞9次,收藏8次。渲染层网络层错误] pages/wode/wode.wxss 中的本地资源图片无法通过 WXSS 获取,可以使用网络图片,或者 base64,或者使用标签。问题 :微信小程序通过css:background-image引入背景图片失败。_微信小程序 css background-image

【解题】重建二叉树(C++实现)-程序员宅基地

文章浏览阅读2.7k次。题目描述:输入二叉树的前序遍历和中序遍历结果 ,请重建出该二叉树,返回其头节点并给出后序遍历序列。假设输入的遍历序列不包含重复数字。题目分析: 根据前序遍历和中序遍历的特征,我们知道在前序遍历序列中,第一个数字总是树的根节点;而在中序遍历中根节点的值在序列中间,左子树的节点值一定位于根节点左边,右子树的节点值一定位于根节点右边。这样我们结合前序遍历和中序遍历序列,就可以确定出树的根节