几条短信验证码防刷机制

1、时间限制:60秒后才能再次发送


这种方法不是非常有用,技术好点的人可以绕过这个限制发送短信。


2、手机号限制:同一个手机号,24小时之内不能够超过5条


这只能避免手动刷短信,对于批量使用不同手机号码刷短信的机器是无用的。


3、短信验证码限制:30分钟之内发送同一个验证码


30分钟之内,所发送的短信验证码都是同样的。第一次请求短信接口,然后缓存短信验证码结果,30分钟之内再次请求,则直接返回缓存的内容


4、前后端校验:提交Token参数校验


前端(客户端)在请求发送短信的时候,同时向服务端提交一个Token参数,服务端对这个Token参数进行校验,通过之后再向用户发送短信


5、唯一性限制:微信产品,限制同一个微信ID用户的请求数量


如果是微信话,可以通过openID来进行识别,时间段内对同一个openID限制短信数量。


6、产品流程限制:分步骤进行


例如注册场景,将注册的步骤分成2步,用户在输入手机号码之后,甚至加上图形验证码之后,才进入验证码步骤。


以上所说到的几种方式,还可以多个方式结合着来作使用,通过多个规则来降低短信被刷的风险。

如果您有更好的方式,请给我留言。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java中验证库的代码通常会结合一些策略,如频率限制、滑动验证码、验证码有效期等。这里提供一个简单的示例,展示了如何使用Spring Boot和JWT(JSON Web Tokens)实现基本的操作: ```java import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.util.concurrent.RateLimiter; @Component public class SmsCodeService { @Value("${sms.code.limit:5}") // 每分钟发送验证码次数限制 private int limit; private final RateLimiter rateLimiter = RateLimiter.create(limit / 60); // 使用令牌桶算法 private final long jwtExpiresInSecs = 60; // 验证码有效时间,秒为单位 public void sendSmsCode(String phoneNumber) { if (!rateLimiter.tryAcquire()) { // 如果超过限频,返回false throw new IllegalStateException("Too many SMS requests. Please try again later."); } // 发送验证码... // 生成并返回JWT,附带手机号和过期时间 String jwt = generateJwt(phoneNumber, jwtExpiresInSecs); // 用户可以通过JWT获取验证码,注意存储JWT时要加上安全措施 } private String generateJwt(String phoneNumber, long expiresInSecs) { // 使用JWT库(如jjwt)创建JWT,包含手机号和过期时间 // 示例: // Map<String, Object> claims = new HashMap<>(); // claims.put("phoneNumber", phoneNumber); // claims.put("exp", System.currentTimeMillis() + (expiresInSecs * 1000)); // String jwt = JWT.create().withClaims(claims).signWith(SignatureAlgorithm.HS256, "your-secret-key").toString(); // 返回生成的JWT } } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值