关于验证码,你不知道的一些问题!

简介: 关于验证码,大家也许会有很多疑问,下面我总结了一些常见问题。

开头的话

关于验证码,大家也许会有很多疑问,下面我总结了一些常见问题。

1.PNG

什么是验证码?

验证码(CAPTCHA)全称为:Completely Automated Public Turing test to tell Computers and Humans Apart,全自动区分计算机和人类的图灵测试,是一种区分用户是计算机还是人的公共全自动程序。


验证码有什么作用?

结合我们的日常生活,我们发现验证码通常出现在登录、注册、领优惠券、购买游戏装备、购票、发帖等场景。

验证码有效防止这种问题对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,验证码很大程度上是用来判断操作是人为还是机器人。

2.jpeg


行为验证码的原理是什么?

针对用户产生的行为轨迹数据进行机器学习建模,结合访问频率、地理位置、历史记录等多个维度信息,快速、准确的返回人机判定结果,故而机器识别+模拟则不易通过。


验证码的类型都有哪些?

1、数字、字母、中文组合:以图片的形式展示字母、数字、中文混合组合,此类验证码一般由4位组成。

2、短信验证码:比较常见的验证码类型,用户填好手机号码,单击获取验证码后,手机上就能收到短信验证码。

3、行为验证码:智能无感、滑动拼图、文字点选、语序点选、字体识别、空间推理等。


怎样防止恶意刷短信验证?

恶意短信验证,属于短信轰炸的一种,用户端表现为高频收到验证短信内容,用户体验差。对公司来讲,大量的恶意短信验证,增加公司运营成本,支付额外的短信运营费用。

防止这种恶意行为,方式之一是可以增加验证码校验。发送短信验证码时,可要求通过验证码。同时在验证码请求错误时,要重置验证码,防止图片验证码识别软件尝试多次识别。

3.jpg

前端代码:

<scriptsrc="captcha.js?appid=xxx"></script><script>kg.captcha({
// 绑定弹窗按钮button: "#captchaButton",
// 验证成功事务处理success: function (e) {
// 验证成功,直接提交表单// form1.submit();console.log(e);
    },
// 验证失败事务处理failure: function (e) {
console.log(e);
    },
// 点击刷新按钮时触发refresh: function (e) {
console.log(e);
    }
});
</script><aid="captchaButton">点击弹出验证窗口</a>


后端代码:

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


最后

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

相关文章
|
6月前
|
机器学习/深度学习 人工智能 大数据
销售易CRM:技术革新助力客户关系管理智能化
销售易CRM是国内领先的客户关系管理系统,通过人工智能、大数据、云计算和低代码开发等技术,助力企业实现智能化转型。其AI与机器学习功能可深度挖掘客户数据价值,提供精准商机洞察;大数据分析赋能企业决策智能化,提升预测能力和运营效率;基于云计算的移动办公功能打破协作边界,提高团队效率;低代码平台支持快速定制化开发,灵活响应业务需求。销售易CRM以技术创新和服务升级,推动企业在数字化浪潮中取得竞争优势,实现可持续发展。
|
5月前
|
JavaScript
vue实现任务周期cron表达式选择组件
vue实现任务周期cron表达式选择组件
754 4
|
XML JSON JavaScript
Py之demjson:Python库之demjson的简介、安装、使用方法详细攻略
Py之demjson:Python库之demjson的简介、安装、使用方法详细攻略
Py之demjson:Python库之demjson的简介、安装、使用方法详细攻略
|
JSON 前端开发 Java
如何封装接口返回结构?
本文详细探讨了API接口返回结构统一化的必要性及其带来的优势,如降低开发的心智负担、减少前端开发难度和提高代码可维护性等。同时也分析了其潜在的缺点,例如灵活性降低和开发成本增加等问题。文章进一步讨论了在Spring Boot中实现统一接口返回结构的具体方法和技术细节,包括如何处理HTTP状态码、返回单个字符串的情况以及如何封装无返回值的接口等。此外,还介绍了如何利用Spring Boot的`ResponseBodyAdvice`和`@RestControllerAdvice`等特性来自动包装控制器方法的返回值及异常处理,以达到更加一致和标准化的接口响应结构。
242 3
如何封装接口返回结构?
|
11月前
|
前端开发 NoSQL 安全
浅谈 前端验证码那些事
浅谈 前端验证码那些事
358 0
|
数据可视化 前端开发 JavaScript
可视化工具D3.js
可视化工具D3.js
359 2
|
9月前
|
存储 编译器 C语言
【C语言】C语言的变量和声明系统性讲解
在C语言中,声明和定义是两个关键概念,分别用于告知编译器变量或函数的存在(声明)和实际创建及分配内存(定义)。声明可以多次出现,而定义只能有一次。声明通常位于头文件中,定义则在源文件中。通过合理组织头文件和源文件,可以提高代码的模块化和可维护性。示例包括全局变量、局部变量、函数、结构体、联合体、数组、字符串、枚举和指针的声明与定义。
278 12
|
10月前
|
JSON API 数据格式
店铺所有商品列表接口json数据格式示例(API接口)
当然,以下是一个示例的JSON数据格式,用于表示一个店铺所有商品列表的API接口响应
|
Kubernetes 负载均衡 算法
如何在kubernetes中实现分布式可扩展的WebSocket服务架构
如何在kubernetes中实现分布式可扩展的WebSocket服务架构
354 1
|
SQL Oracle 关系型数据库
深度解析 MySQL 事务、隔离级别和 MVCC 机制:构建高效并发的数据交响乐(一)
深度解析 MySQL 事务、隔离级别和 MVCC 机制:构建高效并发的数据交响乐
525 0