处理请求带验证信息

88 阅读1分钟

处理请求带验证信息

使用的是Hmacsha1:

操作与后台衔接

必要的参数:

appKey // 密钥 这个是固定的 后台解密也要用这个
timestamp // 时间戳 这个是用来判断时间的 后台设置的时间是5分钟
signature // 生成加密信息

signature 这个加密信息和后台的生成方式是一样的

所以要把appKey和timestamp 还有要传递的参数再次传给后台 还有加密信息signature
后台是要判断你的时间 防止有人中间截取了这个信息,进行处理,所以没有密钥,解析时间太长,再次传给后台的 时间过长 就判断你是非法的请求
后台拿到时间 去比对 看是否超过5分钟 并且将拿到的数据进行加密 和前端生成的加密信息signature的值进行比对

防止重放攻击 步骤:

  1. 安装
npm i crypto-js --save
  1. 方法封装:
import Base64 from 'crypto-js/enc-base64';
import Hmacsha1 from 'crypto-js/hmac-sha1';
import moment from 'moment'

export function RequestEn(source){
  const data = source
  data.appKey = '234' // 密钥
  const wTime = moment(moment().format('YYYY-MM-DD HH:mm:ss')).utc().format('YYYY-MM-DD HH:mm:ss')
  data.timestamp = `${wTime}Z` // 时间
  const add = Object.entries(data);
  let str = '';
  add.forEach(i=> {
    str+=`${i[0]}${i[1]}`
  })
  // 生成加密信息
  const signature = Base64.stringify((Hmacsha1(str,'123456')))
  const sigObj = {signature}
  return Object.assign(data,sigObj)
}
  1. 调用该函数:
RequestEn(params)