防重放攻击实现

本文为博主原创,转载请注明出处:

1.防重放攻击:请求被攻击者获取,并重新发送给认证服务器,从而达到认证通过的目的。

2。解决方案:

 a. 基于timestamp防止重放攻击

       每次 http 请求时,都添加 timestamp 时间戳的参数,服务端接收到请求时,解析 timestamp 值,并与当前时间进行比较,判断是否超过60s,

  如果超过60s 则丢弃该请求。

 b. 基于nonce值得防重放攻击

    每次http请求时,都添加 一个固定长度的随机数或请求ip加随机数进行hash生成的字符串,服务端在接受到请求的时候,解析请求的nonce值,并将nonce值存于数据库或缓存中,

  当请求时,判断数据库或缓存中是否存在该nonce值,如果存在则丢弃该请求。 此时,使用nonce值,在 http 请求时,nonce值可以保证请求的唯一性。

 c .基于timstamp和nonce值防止重放攻击

      单纯基于 timestamp 进行防重放攻击也会存在风险,如果请求被中间人或是黑客获取,且请求的时间戳与当前时间比较时,仍小于60s 时,此时则

  不能进行防重放攻击。

    单纯使用nonce值时,需要服务端不断地保存nonce值,则会导致数据库保存大量的nonce值,影响效率。

    基于以上两种情况,则将两者结合一起使用,nonce值可以保证请求的唯一性,timestamp可以保证请求的时效性。并将保存于数据库或缓存中的nonce值,

  每隔60s清除一次或将缓存中的nonce值时效时间设置为60s。这样就可以减少nonce值对数据库的压力,提高性能。

 

3.

  以上请求中nonce值或时间戳等值,若都使用明文传输,会存在被中间人或黑客截取,再次发起请求的风险。所以在 

 

  

    

 

 

      

  

 

 

 

基于timestamp和nonce的防重放攻击

https://www.cnblogs.com/mymelody/p/7325325.html

重放攻击-实例解析

https://www.cnblogs.com/sharphui2018727-WYH/p/10068383.html

 

重放攻击

https://www.cnblogs.com/happystudyhuan/p/12286076.html

基于timestamp和nonce的防止重放攻击方案

https://blog.csdn.net/koastal/article/details/53456696

上一篇:vue 60s倒计时按钮


下一篇:Fortinet检测命令控制——就是通过心跳,最短60s,最长1天的周期,检测偏离度0.2