重放攻击是指黑客通过抓包,重复使用一个已经被服务端接收通过的包。如果请求时数据库操作,则重放攻击至少将导致服务器拥堵,如果请求是转账呢?
所以预防重放攻击很重要!Very important!Es ist wichtig(德)!Это важно(俄)!
基于timestamp+secret_key的方案
规定客户端的每次请求必须携带时间戳,时间戳与secret_key及其它参数一起进行数字签名,因为黑客不知道加密方式,所以不能生成新的Signature。服务端接受到请求判断该时间戳与服务端的时间差是否超过阈值。
缺点:在阈值范围内进行重放攻击,这种方法就不好用了。
基于nonce+timestamp+secret_key的方案
将nonce也作为数字签名的一部分,服务端将阈值范围内请求的nonce存储起来(不能无限存,超时则删除以减轻存储压力),请求到来时查询已存储的nonce就可知道该请求是否被重放。
优点:阈值范围内的重放攻击可以通过nonce来解决。
缺点:需要消耗一定的存储空间,但相比安全性可忽略~
0 评论
大哥整点话呗~