关于验证码:PHP短信验证码防刷方案

2次阅读

共计 1416 个字符,预计需要花费 4 分钟才能阅读完成。

前言

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

上面是我在我的项目开发中,对避免歹意或者无心刷新验证码做的解决方案笔记。

工夫限度

例如 30 秒后能力再次发送。点击发送短信验证码后,客户端开始 30 秒倒计时,限度用户在这工夫内屡次的发送获取短信验证码的申请。尽管这种办法比广泛,但通过特定形式能够绕过这个限度,间接发送短信验证码。

手机号限度

针对同一个手机号进行注册或其它发送短信验证码的操作时,零碎能够对该手机号进行限度。例如指定工夫内只能发送 5 条短信验证码,超出则提醒请稍后再试。

接入图形验证码

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

前端接入代码

<script src="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 代码

<?php
include "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}";
}

短信预警

当短信验证码申请达到肯定数量时,向管理员发送预警音讯,管理员能够立刻进行监控和爱护。

最初

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

正文完
 0