起因
之前进行模拟登录的时候经常需要传输数据,最近项目正好也涉及一些重要数据的传输。由于http是明文传输,所以只要抓到包,就可以进行重放攻击,严重的甚至可以更改数据。
想法一,签名
第一个想法是对数据进行签名,这样服务器拿到数据重新就行签名,比对两次的签名书否一样就可以了。重要的是签名算法的设计。这个方法应用在app上比较方便,但是如果是web端,则会暴漏签名算法,导致无效
想法二,check_code
第二个想法是服务器生成一次性的验证码。用户拿到验证码之后,把验证码和数据进行md5加密,服务器收到请求之后就删除验证码,然后对数据进行验签,这样就保证了数据的一次性,有效防治重放攻击。check_code可放在redis缓存中
last
继续研究,欢迎讨论