http请求参数加签

1,345 阅读2分钟

一、加签的作用:

由于http请求的开放性,请求参数很容易被拦截篡改。

依照双方事先约定好的规则,请求方(前端)对数据进行加签,接口提供方(后端)则对签名进行验证,验证通过才能放行,进行后续的业务逻辑处理。

但是,加签和验签只能解决请求传输过程中参数篡改的问题,并不能解决敏感参数传输的安全性问题。

二、处理过程:

  • 请求发送方:将请求参数加密后生成一个sign值,也放到请求参数里。

  • 请求接收方:使用同样的规则,也对请求参数(不包括请求发送方放进来的sign值)加密后得到一个sign值。

如果两个sign值相同,就说明参数没有被篡改。

三、加签的步骤:

  • 排序:将所有请求参数(除去值是空的参数),按照参数名 ASCII 字典序升序排序。

  • 拼接:把排序后的参数按参数1值1参数2值2...参数n值n 的方式拼接成一个字符串。 可以按照key=valuekey:value的格式拼接。比如stringTemp = key1=value1&key2=value2&...&keyN=valueN

  • 添加密钥:把分配给接入方的验证密钥key拼接在第2步得到的字符串后面(由接口提供方即后端 分配给接口接入方的密钥key)。 stringTemp = stringTemp + "&key=xxxxxxxxx"

  • 加密:对stringTemp进行md5运算,得到32位字符串,然后转成大写,得到的字符串作为sign的值放到请求参数里。 sign = MD5(stringTemp).toUpperCase()

第3步可以不拼上密钥,第4步也可以使用HmacSHA256这种签名方式,由具体的约定规则决定。

注意:进行md5之前要确保请求发送方和接收方使用的字符串编码一致,比如统一使用utf-8编码。如果编码方式不一致,则计算出来的签名会校验失败。

前后端请求设置签名验证,提升接口安全

前端小程序接口参数签名验证,防止数据泄露

http接口签名机制

js生成接口请求参数签名加密