综合技术--接口签名验证

为了保证接口安全,通常都会在接口中添加签名验证机制。
验证规则:在http请求头中添加authorization属性,其值为 加密签名+"&"+当前时间戳。
加密签名算法以下
#1.按照请求的参数名升序排列,而后依次将参数名与参数值拼接为字符串
举例,请求参数列表
userName -- zhangsan
password -- 123456
排序拼接后就变成:password123456userNamezhangsan
#2.拼接时间戳与秘钥
拼接格式:当前时间戳+排序字符串+秘钥
备注,秘钥是一串先后端约定好的字符串,例如132L158X139l137z,固然该字符串也能够从数据库取。
当前时间戳:1468310093
拼接后字符串:1468310093password123456userNamezhangsan132L158X139l137z
#3.对拼接字符串进行MD5加密
MD5(1468310093password123456userNamezhangsan132L158X139l137z),假设获得字符串以下
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(共32位)
#4.完整的authorization
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&1468310093算法

服务端解析以下
#5.从http的header中取出authorization 用&号做为分隔符,分隔出加密字符串与时间戳
#6.获取传参
1.对传参进行升序排列
2.拼接参数名与参数值
#7.排序字符串(解析后)拼接时间戳与秘钥
时间戳在(#5)中拿获得,秘钥是先后端约定的(数据库取也行)
#8.MD5加密
对上述字符串进行MD5加密 而后与(#5)中获取到的加密字符串进行比对,若是比对上则执行业务逻辑处理。数据库

每一个接口每次请求都要带上authorization,且同一个authorization只能使用一次。所以,即便抓包工具抓到了本次请求的authorization,该authorization不能做为下一个请求的authorization用,即该authorization对下一次请求失效,即在必定程度上保证了接口的安全。后端

相关文章
相关标签/搜索