登录  /  注册
博主信息
博文 16
粉丝 0
评论 0
访问量 8638
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
PHP短信验证码防刷方案
原创
407人浏览过

前言

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

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

时间限制

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

手机号限制

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

接入图形验证码

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

前端接入代码

  1. <script src="captcha.js?appid=xxx"></script>
  2. <script>
  3. kg.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
  2. include "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();
  17. if ($requestResult->code === 0) {
  18. // 验签成功逻辑处理
  19. echo "验证通过";
  20. } else {
  21. // 验签失败逻辑处理
  22. echo "验证失败,错误代码:{$requestResult->code}, 错误信息:{$requestResult->msg}";
  23. }

短信预警

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

最后

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

本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学