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,顺便做了一个演示:凯格行为验证码在线体验

相关文章
|
安全 Java PHP
PHP/JAVA交易所系统开发(成熟案例)丨需求步骤丨指南详细丨方案逻辑丨逻辑教程丨源码功能
An exchange refers to an institution or platform that provides a centralized market for buying and selling transactions, where participants can trade various assets, such as securities, commodities, cryptocurrencies, etc. Exchanges provide market infrastructure and rules to facilitate compliant, saf
|
NoSQL 安全 PHP
hyperf-wise-locksmith,一个高效的PHP分布式锁方案
`hyperf-wise-locksmith` 是 Hyperf 框架下的互斥锁库,支持文件锁、分布式锁、红锁及协程锁,有效防止分布式环境下的竞争条件。本文介绍了其安装、特性和应用场景,如在线支付系统的余额扣减,确保操作的原子性。
315 4
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP开发领域,设计模式是解决常见问题的高效方案集合。它们不是具体的代码,而是一种编码和设计经验的总结。单例模式作为设计模式中的一种,确保了一个类仅有一个实例,并提供一个全局访问点。本文将深入探讨单例模式的基本概念、实现方式及其在PHP中的应用。
单例模式在PHP中的应用广泛,尤其在处理数据库连接、日志记录等场景时,能显著提高资源利用率和执行效率。本文从单例模式的定义出发,详细解释了其在PHP中的不同实现方法,并探讨了使用单例模式的优势与注意事项。通过对示例代码的分析,读者将能够理解如何在PHP项目中有效应用单例模式。
|
存储 NoSQL Java
|
NoSQL Java Redis
认证服务---整合短信验证码,验证码倒计时,验证码防刷校验 【一】
这篇文章介绍了如何在分布式微服务项目中整合短信验证码服务,包括使用阿里云短信验证接口、将短信验证功能集成到第三方服务中、其他服务的远程调用,以及通过Redis实现验证码防刷机制的代码实现和遇到的问题解决方案。
|
PHP
php生成验证码
php生成验证码
146 0
|
前端开发 JavaScript API
php的短信验证的流程,如何实现前端js加后端php
php的短信验证的流程,如何实现前端js加后端php
471 0
|
自然语言处理 安全 Java
JAVA丨PHP交易所源码,JAVA/PHP交易所系统开发稳定版/多语言/海外版/多版本/成熟技术/方案详细/逻辑功能/规则案例
Identify requirements and design the system: Clarify your business requirements and design the architecture and functionality of the system. This includes determining the supported transaction types, user authentication, transaction matching engines, order management, fund management, etc.
PHP验证码的语言包&预警信息通知总结
最近在开发PHP验证码项目,需要使用到不同的语言包和及时的预警短信通知。下面我就好好的总结一下。
PHP验证码的语言包&预警信息通知总结
|
前端开发 PHP
PHP短信验证码
这篇文章主要为大家详细介绍了PHP发送短信接入验证码的实现流程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
PHP短信验证码

热门文章

最新文章