所有栏目

怎么解除防重放攻击

已输入 0 字
优质回答
  • 解决方案:

    a. 基于timestamp防止重放攻击

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

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

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

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

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

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

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

    不能进行防重放攻击。

    2023-10-24 15:21:58
  • 1. 加随机数

    该方法优点是认证双方不需要时间同步,双方记住使用过的随机数,如发现报文中有以前使用过的随机数,就认为是重放攻击。缺点是需要额外保存使用过的随机数,若记录的时间段较长,则保存和查询的开销较大。

    2. 加时间戳

    该方法优点是不用额外保存其他信息。缺点是认证双方需要准确的时间同步,同步越好,受攻击的可能性就越小。但当系统很庞大,跨越的区域较广时,要做到精确的时间同步并不是很容易。

    3. 加流水号

    就是双方在报文中添加一个逐步递增的整数,只要接收到一个不连续的流水号报文(太大或太小),就认定有重放威胁。该方法优点是不需要时间同步,保存的信息量比随机数方式小。缺点是一旦攻击者对报文解密成功,就可以获得流水号,从而每次将流水号递增欺骗认证端

    2023-10-24 15:21:58
最新问题 全部问题