PHP短信验证码防刷方案

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

前言

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

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

2.png


时间限制

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


手机号限制

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


接入图形验证码

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

1.PNG


前端接入代码

<scriptsrc="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><aid="captchaButton">点击弹出验证窗口</a><inputtype="hidden"name="kgCaptchaToken"value=""/>


PHP代码

<?phpinclude"public/KgCaptchaSDK.php";
// 填写你的 AppId,在应用管理中获取$appId="AppId";
// 填写你的 AppSecret,在应用管理中获取$appSecret="AppSecret";
$request=newkgCaptcha($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}";
}


短信预警

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


最后

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

相关文章
|
13天前
|
XML JSON API
快速淘宝商品详情页面API接口传输 php
PI(Application Programming Interface,应用程序接口)是一组预定义的函数、协议和工具,用于构建软件应用程序之间的交互。它允许不同的软件系统和应用通过统一的接口进行数据交换和通信
|
29天前
|
PHP 数据安全/隐私保护
PHP在线加密系统网站源码
这个是sg的加密,免费可用(目前)并不会收费 源码说明:下载直接上传即可
19 1
PHP在线加密系统网站源码
|
7月前
|
前端开发 JavaScript API
php的短信验证的流程,如何实现前端js加后端php
php的短信验证的流程,如何实现前端js加后端php
|
9月前
|
前端开发 PHP 开发工具
php实现微信支付功能
php实现微信支付功能
134 0
|
10月前
|
PHP
PHP实现图片登录验证码的解决方案
PHP实现图片登录验证码的解决方案
75 0
|
12月前
|
SQL PHP 数据安全/隐私保护
PHP审计-后台绕过登录
PHP审计-后台绕过登录
PHP验证码的语言包&预警信息通知总结
最近在开发PHP验证码项目,需要使用到不同的语言包和及时的预警短信通知。下面我就好好的总结一下。
PHP验证码的语言包&预警信息通知总结
|
算法 PHP 开发者
ecshop | php接入支付宝申报海关接口的总结【避坑】
ecshop | php接入支付宝申报海关接口的总结【避坑】
355 0
ecshop | php接入支付宝申报海关接口的总结【避坑】
|
应用服务中间件 PHP nginx
PHP实现微信退款功能
PHP实现微信退款功能 最近在调微信退款接口,发现有许多坑,更大家分享一下 ① 要是在测试的时候,网页提示 curl 58 说明 证书的路径出现问题(这里要填物理路径,也就是绝对路径) ②网页提示curl 52 说明你的证书引入少了,在官方的demo上只有两个证书 apiclient_cert.pem和 apiclient_key.pem  你还需要引入一个证书 rootca.pem,这个证书需要你登录到 你的商户平台上下载
|
PHP
【PHP秒杀系统】第三篇 商品页面服务端代码开发
【PHP秒杀系统】第三篇 商品页面服务端代码开发
75 0
【PHP秒杀系统】第三篇 商品页面服务端代码开发