美文网首页
防重放攻击

防重放攻击

作者: Sun_c39f | 来源:发表于2020-08-05 14:35 被阅读0次
  1. 使用时间戳方式
    在请求参数中添加时间戳参数,服务器端首先验证时间戳timestamp是否有效,比如是服务器时间戳5分钟之前的请求视为无效。

  2. 使用签名验证+用户编号的方式
    举个例子:
    1、String sign = MD5(参数+密钥+时间戳 )得本次请求的签名。
    2、在Redis中记录key=用户编号,value=签名值。

protected void replayAttackDefending(EncryptModel encryptModel) {
        /**
         * 如果未开启防重放攻击则返回
         */
        if (!this.replayAttack) {
            return;
        }
        /**
         * 时间判断
         */
        Long ts = Long.valueOf(encryptModel.getTs());
        Long current = System.currentTimeMillis();
        int tenMinutes = 10 * 60 * 1000;
        if (current - ts > tenMinutes) {
            ResponseEnum.PERMISSION_NOT_SAFE.assertNotNull(null);
        }
        /**
         * 重复判断
         */
        ClientLoginVo loginUser = LoginContextUtil.getLoginUser();
        log.info("the login user is {}", JSON.toJSONString(loginUser));
        String key = loginUser.getId() + "_" + encryptModel.getSign();
        boolean isExists = redisUtil.setIfAbsent(key, "", Duration.ofMinutes(5));
        ResponseEnum.PERMISSION_NOT_SAFE.assertEquals(false, isExists);
    }

相关文章

  • 防重放攻击

    使用时间戳方式在请求参数中添加时间戳参数,服务器端首先验证时间戳timestamp是否有效,比如是服务器时间戳5分...

  • 说说API的防重放机制

    说说API的防重放机制 我们在设计接口的时候,最怕一个接口被用户截取用于重放攻击。重放攻击是什么呢?就是把你的请求...

  • app安全设计

    防重放 重放攻击就是拦截app的HTTP请求包,然后多次攻击后台服务器。 解决方案: 1.利用随机数和时间戳 客户...

  • 2018-08-14

    重放攻击

  • 重放攻击

      最近系统上线之前需要做安全测试,安全测试人员指出了系统存在重放攻击,由于之前项目没有遇到过这样的问题,在这里就...

  • 防止重放机制

    一、API重放攻击 我们在设计接口的时候,最怕一个接口被用户截取用于重放攻击。重放攻击是什么呢?就是把你的请求原封...

  • 16;重放攻击

    黑客把已发送给服务器的信息重新又发送了一遍,有时候这样可以骗取服务器的多次响应。 比如游戏里领金币:不断地跟服务器...

  • 业务安全分析

    我们测试的时候可以分为以下几种测试场景进行测试: 一.重放攻击 重放攻击是指攻击者发送一个目的主机已接收过的包,来...

  • 请求重放攻击和中间人攻击

    重放攻击 重放攻击简单说就是黑客截获了请求方的报文,然后用此报文直接发给后端,让后端误以为黑客是正常的请求方。 重...

  • 重放攻击(Replay Attacks)

    重放攻击(Replay Attacks)又称重播攻击、回放攻击,是指攻击者发送一个目的主机[https://bai...

网友评论

      本文标题:防重放攻击

      本文链接:https://www.haomeiwen.com/subject/pspnrktx.html