发表于: 2019-12-08 23:16:41

1 1336


今天完成的事:
1、完成验证防攻击策略。
使用redis的incr方法,会将key存储的数字值增加一,以此来实现注册号码的注册次数计数。如果key不存在,会将key的值初始化为0,然后再执行incr操作。
将对应的键值对设置过期时间,限制第一次注册后的三分钟内只能注册5次,注册次数过多则需要一小时后才能注册,这里测试时为了方便,设置为5分钟。
这里测试时发现,容联短信的验证发送有自己的防攻击策略,禁止短时间连续发送请求,但是没有找到具体的实现。

按照思路实现的结果,第五次注册时,会警告已注册五次。

第六次会直接限制注册。
工具类具体代码:
public class TelMailTestUtil {
    private JedisUtil jedisUtil = new JedisUtil();
    // 第一次注册后,可注册有限次数的时间
    private final static int TIME_LIMIT = 60*3;
    // 短时间已注册有限次数后,限制再次注册的时间
    private final static int LAST_TIME_LIMIT = 60*5;
    // 周期时间可注册的次数
    private final static int MOST_TIMES = 5;
    // 周期时间,注册号的添加标识符
    private final static String TIMES = "_TIMES";
    // 限制再次注册时间,注册号的添加标识符
    private final static String LAST_TIMES = "_LAST_TIMES";
    // 检查注册次数是否符合要求
    public boolean timesTest(String tel){
        // 周期时间的注册号标识符
        String telTimes = tel + TIMES;
        // 限制再次注册时间的注册号标识符
        String telLastTimes = tel + LAST_TIMES;
        // 表示注册超过次数后,已经过限制时间 LAST_TIME_LIMIT
        if(jedisUtil.ttl(telLastTimes) == -2){
            // 周期时间注册号的注册次数
            Long times = jedisUtil.incr(telTimes);
            System.out.println("该手机号注册次数为:"+ times +" 次");
            // 第一次注册,设置过期时间3分钟
            if(times == 1){
                jedisUtil.expire(telTimes,TIME_LIMIT);
                return true;
            }
            // 周期时间注册号,还未过期
            if(jedisUtil.ttl(telTimes) != null && jedisUtil.ttl(telTimes) >= 0){
                System.out.println("距离第一次注册过期时间还有"+ jedisUtil.ttl(telTimes) +"秒,可进行注册。");
                // 周期时间内,达到注册次数
                if(times == MOST_TIMES){
                    // 设置再次注册的间隔时间,即此处的过期时间
                    jedisUtil.setex(telLastTimes,LAST_TIME_LIMIT,String.valueOf(times));
                    System.out.println("该手机号已注册"+ times +"次,再次注册需要等待。");
                }
                return true;
            }
            // 未达上诉条件,均返回false
            return false;
        }
        System.out.println("距离注册限时还有"+ jedisUtil.ttl(telLastTimes) +"秒,不可注册。");
        // 注册超过次数后,未过限制时间,返回false
        return false;
    }
}
2、实现阿里云、七牛云数据迁移。
在阿里云oss控制台,有官方工具可以迁移数据。

数据迁移在公测中,需要申请。
在阿里云创建数据地址,分别是oss阿里的地址,为目标地址。其他,七牛云的地址,为源地址。

创建两个地址后,再创建迁移任务。

迁移成功。

明天计划的事:
1、将任务七要求集成到项目中,实现注册登录验证。
2、查看ajax,学习基本的验证操作。
遇到的问题:
验证防攻击完成,但是老感觉会有漏洞,暂时没检查出来。逻辑感觉不够清晰。
收获:
1、完成验证防攻击策略。
2、实现阿里云、七牛云数据迁移。

返回列表 返回列表
评论

    分享到