下面是我在项目开拓中,对防止恶意或者无意刷新验证码做的办理方案条记。

韶光限定

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

手机号限定

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

php防止刷新重复提交PHP短信验证码防刷计划 Node.js

接入图形验证码

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

前端接入代码

<script src=&#34;captcha.js?appid=xxx"></script><script>kg.captcha({ // 绑定弹窗按钮 button: "#captchaButton", // 验证成功事务处理 success: function (e) { // 验证成功,直接提交表单 // form1.submit(); kg.$("#kgCaptchaToken").value = e["token"]; console.log(e); }, // 验证失落败事务处理 failure: function (e) { console.log(e); }, // 点击刷新按钮时触发 refresh: function (e) { console.log(e); }});</script><a id="captchaButton">点击弹出验证窗口</a><input type="hidden" name="kgCaptchaToken" value="" />

PHP代码

<?phpinclude "public/KgCaptchaSDK.php";// 填写你的 AppId,在运用管理中获取$appId = "AppId";// 填写你的 AppSecret,在运用管理中获取$appSecret = "AppSecret";$request = new kgCaptcha($appId, $appSecret);// 填写运用做事域名,在运用管理中获取$request->appCdn = "appCdn";// 前端验证成功后颁发的 token,有效期为两分钟$request->token = $_POST["kgCaptchaToken"];// 当安全策略中的防控等级为3时必须填写$request->userId = "kgCaptchaDemo";// 要求超时时间,秒$request->connectTimeout = 10;$requestResult = $request->sendRequest();if ($requestResult->code === 0) { // 验签成功逻辑处理 echo "验证通过";} else { // 验签失落败逻辑处理 echo "验证失落败,缺点代码:{$requestResult->code}, 缺点信息:{$requestResult->msg}";}短信预警

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

末了

顺便做了一个演示:凯格行为验证码在线体验