[验证码] KgCaptcha风险监测方法

简介: “访问过于频繁,请先完成验证”,相信大家对这句话应该不陌生。当我们访问一个网站过于频繁时,就会弹出这样的提示,甚至于让我们先通过滑动验证码。

前言

访问过于频繁,请先完成验证”,相信大家对这句话应该不陌生。当我们访问一个网站过于频繁时,就会弹出这样的提示,甚至于让我们先通过滑动验证码。


开发过程

1、模拟当前为新闻列表。

1.PNG

2、前台接入KgCaptcha

<scriptsrc="captcha.js?appid=xxx"></script><scripttype="text/javascript">kg.captcha({
// 绑定弹窗按钮button: "#captchaButton",
// 验证成功事务处理success: function (e) {
// 验证成功,直接提交表单console.log(e);
document.cookie="sNum=1";
document.cookie="sTime="+Math.round(newDate().getTime()/1000);
document.getElementById('kgCaptchaToken').value=e['token']
form1.submit();
    },
// 验证失败事务处理failure: function (e) {
console.log(e);
    },
// 点击刷新按钮时触发refresh: function (e) {
console.log(e);
    }
</script><aid="captchaButton"style="display: none;">点击弹出验证窗口</a><formmethod="post"id="form1"name="form1"><inputtype="hidden"name="action"value="captcha"/><inputtype="hidden"name="kgCaptchaToken"id="kgCaptchaToken"value=""/></form>

2.PNG


3、要求

  • 通过cookie监测当前页面访问,指定时间内访问次数超出,则弹出验证码,要求用户验证。
  • 若为首次访问,弹出验证码,要求用户验证。
// 设置cookiewindow.onload=function() {
// 当前时间varcTime=Math.round(newDate().getTime()/1000)
// 当前cookie的访问次数varsNum=get_cookie2('sNum')
// 当前cookie的上一次访问时间varsTime=get_cookie2('sTime')
// 判断cookie是否设置if (sNum==undefined&&sTime==undefined) {
document.getElementById('captchaButton').click()
    } else {
// 判断访问次数和上一次访问时间if (parseInt(sTime)+10<=cTime&&sNum>9) { 
document.getElementById('captchaButton').click()
        } else {
if (cTime-sTime<10) {
document.cookie="sNum="+(parseInt(sNum)+1);
document.cookie="sTime="+sTime;
            } else {
document.cookie="sNum=1";
document.cookie="sTime="+cTime; 
            }
        }
    }
}
// 获取cookie的方法functionget_cookie2(val) {
vararr=document.cookie.split(';');
for(vari=0; i<arr.length; i++){
vararr2=arr[i].split('=');
arr2[0] =arr2[0].replace(/\s*/g,"");
if(arr2[0] ==val){
returnarr2[1]
        } 
    }
}


4、后端验证

<?phpheader("Content-type:text/html;charset=utf-8");
// 后端验证if (isset($_POST) &&$_POST['action'] =='captcha') {
include"./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"<script>alert('验证通过');</script>";
header('location: demo.php');
    } else {
// 验签失败逻辑处理echo"<script>alert('验证失败,错误代码:{$requestResult->code}, 错误信息:{$requestResult->msg}');</script>";
header('location: demo.php');
    }
}
?>


最后

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

相关文章
|
canal 关系型数据库 MySQL
实时计算 Flink版产品使用问题之在进行整库同步MySQL数据到StarRocks时,遇到全量数据可以同步,但增量数据无法同步,是什么导致的
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
XML 安全 网络协议
netconf简介
netconf简要
|
5月前
|
人工智能 算法 数据库
美团面试:LLM大模型存在哪些问题?RAG 优化有哪些方法?_
美团面试:LLM大模型存在哪些问题?RAG 优化有哪些方法?_
|
5月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的闪回事务查询
Oracle数据库的闪回事务查询(Flashback Transaction Query)是闪回版本查询的扩充,可用于审计或撤销已提交的事务。通过`flashback_transaction_query`视图,可生成还原特定事务的SQL语句。本文介绍了其基本概念,并通过实战演示如何使用该功能:从授权、开启UNDO数据增强,到创建测试表和事务,最后利用闪回查询撤销已提交的事务,验证数据恢复效果。附带视频讲解,帮助深入理解。
139 3
|
JavaScript 数据可视化 算法
vue3+threejs可视化项目——搭建vue3+ts+antd路由布局(第一步)
vue3+threejs可视化项目——搭建vue3+ts+antd路由布局(第一步)
271 6
|
10月前
|
SQL 监控 数据库
深入探索Django ORM:高效数据操作的秘诀与实践####
在当今的Web开发领域,提升数据访问层的效率是优化应用性能的关键。本文旨在通过剖析Django框架中的ORM(对象关系映射)机制,揭示其如何简化数据库交互,并探讨一系列高级技巧与策略,帮助开发者构建更高效、可维护的数据访问代码。我们不涉及安装步骤或基础概念,而是聚焦于实战经验分享,旨在为中高级开发者提供深度洞见。 ####
|
10月前
|
XML 前端开发 Android开发
Kotlin教程笔记(80) - MVVM架构设计
Kotlin教程笔记(80) - MVVM架构设计
|
11月前
|
运维 监控 安全
实时计算Flink场景实践和核心功能体验
实时计算Flink场景实践和核心功能体验
|
Shell
esp32入门笔记
这篇文章是关于ESP32 S3入门的笔记,包括了安装编译工具、下载ESP-IDF框架、设置工具和环境变量、以及烧录固件的步骤说明。
314 5
|
人工智能 搜索推荐
AI助理小课堂01期
钉钉AI助理 汇集钉钉多项 AI 产品功能 以智能化方式辅助企业日常的工作