api接口安全设计

关于接口的安全性,有几个重要的点。

1.参数加密

2.时间戳

3.防止重放

 

这篇只写思路,有经验的同志应该不需要代码,也是我懒(哈哈哈)

 

1.大部分的加密方式,是将发送的参数进行拼接然后加密。然后服务端同时使用相同的方式加密,看加密字符是否相等。这种的可以参考微信支付文档,有范例。关于使用什么方式加密,RSA,MD5都可以。

但是这种方式,不怀好意的人根本不需要破解你的秘钥与加密方式。我抓包获取的请求(https的请求也可以抓取,不知道请百度),重新发送就可以了,比如退款接口、提现接口就很尴尬了。

 

2.针对上面的情况,有人就将时间戳加入接口。1小时,1分钟后就算重发请求,时间失效了也不行。但是,但是,但是,大部分的失效设置的是1分钟左右,因为客户端、服务端时间不统一,并且也很难完全统一。比方跟金钱相关的接口,1分钟内来个100个。依然会遇到情况1的问题。

 

3.所以针对上面的情况,有简单的方式。将接口中加入随机字符,或者干脆把签名参数放入缓存中(只要短时间内key值不重复),相当于每个请求有相应的key。同时做到缓存失效时间比  允许时间误差稍微长一些。那么基本就ok了。

 

参数加密,这样第一层防护,防止简单的非正常改参数调用。

加上时间失效,防止后续   多次旧合理请求   被   不合理发送。

加上随机字符缓存作为请求key,解决合理接口一次性使用的要求。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值