KgCaptcha验证的那些事

简介: 针对KgCaptcha验证码,当用户点击完成验证,系统进行风险评估,根据风险程度进行验证,并返回结果。下面是我对前/后端验证的分析。

01 前言

针对KgCaptcha验证码,当用户点击完成验证,系统进行风险评估,根据风险程度进行验证,并返回结果。下面是我对前/后端验证的分析。

2.PNG

02 代码接入

HTML代码

<scriptsrc="captcha.js?appid=xxx"></script><script>kg.captcha({
// 绑定元素,验证框显示区域bind: "#captchaBox",
// 验证成功事务处理success: function(e) {
console.log(e);
    },
// 验证失败事务处理failure: function(e) {
console.log(e);
    },
// 点击刷新按钮时触发refresh: function(e) {
console.log(e);
    }
});
</script><divid="captchaBox">载入中 ...</div>


PHP代码

<?phpinclude"public/KgCaptchaSDK.php";
// 填写你的 AppId,在应用管理中获取$appId="xxx";
// 填写你的 AppSecret,在应用管理中获取$appSecret="xxx";
$request=newkgCaptcha($appId, $appSecret);
// 填写应用服务域名,在应用管理中获取$request->appCdn="https://cdn.kgcaptcha.com";
// 前端验证成功后颁发的 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}";
}


03 验证/验签分析

时间监测

  1. 页面载入离当前时间超过20分钟,有可能客户端时间不正确
  2. 第一次点击和最后一次点时时间过长,秒
  3. 第一次点击和最后一次点时时间过快,秒
ifself.auth.data["level"] >1andself.POST["type"] notin (10, 11, 12, 13, 14, 15):  # 风控等级,字体识别和空间推理单次点击不检测间隔时间inter= (5, 0.1) ifself.POST["type"] in (1, 2) else (12, 0.2)  # 设置拼图/文字点击两种不同类型间隔时间ifabs(self.POST["load"] -self.kg["RUN_TIME"][3]) >self.timeout:  # 超时时间,JS载入时间离当时时间,秒returnself.r_code(code=30003)
ifabs(self.POST["end"] -self.POST["start"]) >inter[0]:
returnself.r_code(code=30004)
ifabs(self.POST["end"] -self.POST["start"]) <inter[1]:
returnself.r_code(code=30005)


来路域名检测

ifnotself.kg["HTTP_REFERER"]: returnself.r_code(30006)  # 域名不合法,无法获取来路域名ifnotself.auth.domain_auth(): returnself.r_code(30007)  # 来源域名未授权


验证次数限制检测

excess=self.auth.excess(1)
ifexcess:
returnself.r_code(code=[30016, 30017, 30018][excess-1])


应用有效时间检测

validity=self.auth.app_validity()
ifvalidity[0] ==1: returnself.r_code(30009)  # 授权未开始ifvalidity[0] ==2: returnself.r_code(30010)  # 授权已结束ifself.auth.app_state(): returnself.r_code(30011)  # 当前应用/域名被禁用


客户端IP地址

ifnotis_ip(self.kg["HTTP_ADDR"]): returnself.r_code(30012)  # 无法获取IP地址ip_list=self.auth.ip_list()
ifip_list==1: returnself.r_code(30013)  # 黑名单ifip_list==2: returnself.r_code(30014)  # 非白名单


用户在X分钟内错误记录数超过n条

ifself.auth.data["level"] >0:
ifnotself.auth.risk(): returnself.r_code(30015)  # x 分钟内超过 n 条错误记录


04 最后

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

相关文章
|
小程序 数据安全/隐私保护 开发者
【已解决】开发者扫码登录提示“需要验证小程序密码”
开发者扫码登录提示“需要验证小程序密码”
845 0
【已解决】开发者扫码登录提示“需要验证小程序密码”
|
7月前
|
IDE 测试技术 API
使用京东API接口适用于的环境及验证调用合法性的方法
在电商领域,京东API接口支持商品信息查询、订单处理等功能。开发者需确保在稳定服务器端环境使用,选择合适编程语言及框架,并具备足够网络带宽处理能力。开发环境应配备IDE或代码编辑器及所需库。测试环境需充分验证API稳定性与可靠性。合法性验证包括:正确使用App Key和App Secret进行鉴权;掌握签名规则并在请求中添加签名;遵守请求频率限制;理解并遵循数据使用协议。遵循这些指导原则可保证API调用的合法性和稳定性。
|
6月前
|
缓存 机器人 网络安全
steam报错“您对 CAPTCHA 的响应似乎无效。请在下方重新验证您不是机器人”
你是否满怀期待地准备加入 Steam 的大家庭,却被烦人的 CAPTCHA 验证拦在了门外? 😫 “您对 CAPTCHA 的响应似乎无效。请在下方重新验证您不是机器人。” 这句冰冷的提示,仿佛在嘲笑你的努力,即使反复尝试,错误依然顽固地存在,让人抓狂!🤯 别担心,你不是一个人!很多小伙伴在初次接触 Steam 时,都会遇到这个令人头疼的问题。
|
9月前
|
存储 前端开发 搜索推荐
Web前端网站(一) - 登录页面及账号密码验证
页面背景动态是烟花和文字特效与缓缓下落的雪花相结合,在登录表单的旁边还有五个白色光圈以不规则的方式环绕,当鼠标靠近时,会发出彩色的光芒~~~
127 1
Web前端网站(一) - 登录页面及账号密码验证
如何验证企业微信生成的token是否有效?
如何验证企业微信生成的token是否有效?
141 0
|
安全 开发工具
KgCaptcha 行为验证码安全策略设置
在验证码项目中,都会遇到验证码被恶意大量高频的调用,给服务造成很多无效的注册或登录,占用大量的系统资源。
KgCaptcha 行为验证码安全策略设置
|
JavaScript 开发工具 Python
KgCaptcha验证码实现笔记
闲来无聊,在网上发现了一个验证码产品KgCaptcha,下面是我用KgCaptcha开发验证码的记录。
KgCaptcha验证码实现笔记
|
安全 API
api漏洞系列-邮箱验证API接口无限制,可作为邮箱炸弹
漏洞描述 https://admin.phacility.com/settings/user/toma/page/email/ 中的API接口是无限的,可以用作邮箱炸弹。
449 4
api漏洞系列-邮箱验证API接口无限制,可作为邮箱炸弹
|
开发工具
KgCaptcha 语序识别验证码请求日志记录
请求日志记录是一个非常普遍的功能,几乎可以涉及到所有的项目。所以一个方便使用的日志记录,将会方便日后的管理,于是我通过使用 KgCaptcha 在我的验证码项目中实现。
KgCaptcha 语序识别验证码请求日志记录
|
搜索推荐 前端开发 API
这个验证码合集,从图形到行为验证,你想要的都有-KgCaptcha
凯格行为验证码 - KgCaptcha,采用业界通用的API接口方式,对接轻松简单,即可享受带来的产品服务能力。自定义样式及风控等级,完全个性化的设置,与你的应用完美融合。
这个验证码合集,从图形到行为验证,你想要的都有-KgCaptcha