PHP短信验证码防刷方案

前言

短信验证码是通过发送验证码到手机的一种有效的验证码系统。利用短信验证码来注册会员,大大降低了非法注册的数据。

下面是我在项目开发中,对防止恶意或者无意刷新验证码做的解决方案笔记。

2

时间限制

例如30秒后才能再次发送。点击发送短信验证码后,客户端开始30秒倒计时,限制用户在这时间内多次的发送获取短信验证码的请求。虽然这种方法比普遍,但通过特定方式可以绕过这个限制,直接发送短信验证码。

手机号限制

针对同一个手机号进行注册或其它发送短信验证码的操作时,系统可以对该手机号进行限制。例如指定时间内只能发送5条短信验证码,超出则提示请稍后再试。

接入图形验证码

客户端发送短信验证码前,接入图形验证码,让用户验证。向服务端提交一个Token参数,服务端对这个Token参数进行验证,验证通过之后,再向请求发送短信的接口向用户手机发送短信。

1

前端接入代码

1<script src="captcha.js?appid=xxx"></script> 2<script> 3kg.captcha({ 4 // 绑定弹窗按钮 5 button: "#captchaButton", 6 // 验证成功事务处理 7 success: function (e) { 8 // 验证成功,直接提交表单 9 // form1.submit(); 10 kg.$("#kgCaptchaToken").value = e["token"]; 11 console.log(e); 12 }, 13 // 验证失败事务处理 14 failure: function (e) { 15 console.log(e); 16 }, 17 // 点击刷新按钮时触发 18 refresh: function (e) { 19 console.log(e); 20 } 21}); 22</script> 23<a id="captchaButton">点击弹出验证窗口</a> 24<input type="hidden" name="kgCaptchaToken" value="" />

PHP代码

1<?php 2include "public/KgCaptchaSDK.php"; 3// 填写你的 AppId,在应用管理中获取 4$appId = "AppId"; 5// 填写你的 AppSecret,在应用管理中获取 6$appSecret = "AppSecret"; 7$request = new kgCaptcha($appId, $appSecret); 8// 填写应用服务域名,在应用管理中获取 9$request->appCdn = "appCdn"; 10// 前端验证成功后颁发的 token,有效期为两分钟 11$request->token = $_POST["kgCaptchaToken"]; 12// 当安全策略中的防控等级为3时必须填写 13$request->userId = "kgCaptchaDemo"; 14// 请求超时时间,秒 15$request->connectTimeout = 10; 16$requestResult = $request->sendRequest(); 17if ($requestResult->code === 0) { 18 // 验签成功逻辑处理 19 echo "验证通过"; 20} else { 21 // 验签失败逻辑处理 22 echo "验证失败,错误代码:{$requestResult->code}, 错误信息:{$requestResult->msg}"; 23}

短信预警

当短信验证码请求达到一定数量时,向管理员发送预警消息,管理员可以立即进行监控和保护。

最后

SDK开源地址:KgCaptcha (KgCaptcha) · GitHub,顺便做了一个演示:凯格行为验证码在线体验

点赞
收藏

评论区

加载中...

相关推荐

如何读取redis的手机号验证码数据,实现自动化登录测试

1、案例描述用户选择短信登录!发送短信后,后端接口逻辑已把验证码缓存在redis,!在apifox上定义对应下发登录短信接口,短信登录接口下载地址:这时候问题就来了,怎么样才能让apifox自动获取下发登录短信接口对应的手机号的验证码,自动填充到短信登录接口的code字段?2、解决思路方案一:后端通过接口返回验证码

验证码短信API的应用场景有哪些你知道嘛?

短信验证码已经影响到了我们生活方方面面,成为了不可或缺的一部分。同时,短信验证码也是用户体验中的一个重要指标,如果手机经常出现接收验证码很慢甚至是没有接收到验证码的情况,这就会严重影响到网站或者APP的用户体验,从而导致大量用户的流失。短信验证码如此重要,那个短信验证码API也是必不可少的,这篇文章我就来说说短信验证码API的应用场景

【总结】Java实现短信验证码

Java是一种流行的编程语言,验证码是一种常用的网络安全技术。Java发展至今,网上也出现了各种各样的验证码,本人初学Java,下面是我用Java实现短信验证码的总结。

一文带你看透短信验证码

短信验证码应用于我们生活、工作的方方面面,比如注册登录账号、支付订单、修改密码等等。验证码短信主要出于安全的考虑,防止应用/网站被恶意注册,恶意攻击,对于网站、APP而言,大量的无效注册,重复注册,甚至是恶意攻击很令人头痛。

APISpace 验证码短信API接口案例代码

APISpace验证码短信API接口案例代码

验证码短信API:企业级安全验证的必备工具

随着数字经济的蓬勃发展,企业对在线服务的安全性要求越来越高。在这种背景下,验证码短信API作为一种有效的安全验证工具,正逐渐成为企业级应用的标配。本文将探讨验证码短信API如何为企业级安全验证提供坚实保障。