如何防止短信盗刷和短信轰炸? 防止短信盗刷和短信轰炸的有效方法(2)
导读:如何防止短信盗刷和短信轰炸,上述执行代码中有两个关键操作:第一,生成图形验证码,并返回给前端程序;第二,将此图形验证的标识(ID)和正确的验证码保存到 Redis,方便后续验
如何防止短信盗刷和短信轰炸
上述执行代码中有两个关键操作:第一,生成图形验证码,并返回给前端程序;第二,将此图形验证的标识(ID)和正确的验证码保存到 Redis,方便后续验证。
- 前端用户拿到图形验证码之后,输入图形验证码,请求后端程序验证,并发送短信验证码。
- 后端程序拿到(图形)验证码之后,先验证(图形)验证码的正确性.如果正确,则发送短信验证码,否则,将不执行后续流程并返回执行失败给前端,核心实现代码如下:
// redis 里面 key 对应的真实的验证码
String redisCodeValue = (String) redisTemplate.opsForValue().get(user.getCodeKey());
// 验证 redis 中的验证码和用户输入的验证码是否一致
if (!StringUtils.hasLength(redisCodeValue) || !redisCodeValue.equals(user.getCheckCode())) {
// 验证码不正确
return AjaxResult.fail(-1, "验证码错误");
}
// 清除 redis 中的验证码
redisTemplate.opsForValue().set(userInfoVO.getCodeKey(), "");
// 请求短信 API 发送短信业务......
3.2 添加 IP 限制
IP 限制可以在网关层 Spring Cloud Gateway 中实现,在 Gateway 中使用全局过滤器来完成 IP 限制,核心实现代码如下:
@Component
public class IpFilter implements GlobalFilter {
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
// 获取请求 IP
String ip = exchange.getRequest().getRemoteAddress().getAddress().getHostAddress();
Long count = redisTemplate.opsForValue().increment(ip, 1); // 累加值
if(count >= 20){ // 大于最大执行次数
redisTemplate.opsForValue().decrement(ip, 1); // 变回原来的值
// 终止执行
response.setStatusCode(HttpStatus.METHOD_NOT_ALLOWED);
return response.setComplete();
}
redisTemplate.expire(ip, 1, TimeUnit.DAYS); // 设置过期时间
// 执行成功,继续执行后续流程
return chain.filter(exchange);
}
}
其中,访问次数使用 Redis 来存储。
3.3 开启 IP 黑名单
IP 黑名单可以在网管层面通过代码实现,也可以通过短信提供商提供的 IP 黑名单来实现。
例如,阿里云短信提供的 IP 黑名单机制,如下图所示:


通过以上设置之后,我们就可以将监控中有问题的 IP 设置为黑名单,此时 IP 黑名单中的 IP 就不能调用短信的发送功能了。
PS:网关层面实现 IP 黑名单,可以参考添加 IP 限制的代码进行改造。
相关阅读
-
详情页设计网站有哪些 详情页在线制作免费
跟大家说一说详情页设计网站有哪些和详情页在线制作免费方面的知识,如有不对的地方欢迎指正! 顾客进店靠主图,留住顾客靠详情 我们可以试想一下,平时自己在淘宝买东西的时候肯定第
-
增量SPF的原理详解 增量SPF的工作原理解析
为大家介绍增量SPF的原理详解方面的知识,接下来分享详细内容。 增量SPF是一种优化技术,它避免了在拓扑变化不大的情况下重新计算整个SPT。 当发生拓扑变化时,例如LSA类型 1和/或LSA类型
-
IIS配置https ssl证书 IIS安装服务器证书图文教程
网站服务器选用windows server, 如何在IIS配置https ssl证书呢? 现在基本上很多网站都会部署SSL证书,这样网站更安全,浏览器也不会提示不安全,下面IT袋小编就给大家分享 IIS安装服务器证书图
-
5G-Advanced的应用领域有哪些
小编为大家解答5G-Advanced的应用领域有哪些的话题,下面IT袋网为您详细介绍 智能城市和物联网 5G-Advanced在智能城市和物联网领域的应用为城市生活带来了革命性的变化。 其高速、低延迟的特


