图形验证码最佳实践

简介:

3次失败之后会要求输入图形验证码

打开两个标签页,都是在有图形验证码的情况下.

第一个标签页成功,第二个标签页输入错误的图形验证码也能通过

为什么?

因为只要操作成功,就不需要校验图形验证码.

 

今天想设计一个图形验证码的最佳实践

(1) 首先,要明确图形验证码的目的是什么

图形验证码的目的是:防止自动化攻击.

防止暴力破解密码

12306 为什么搞那么复杂的验证码,就是为了防止机器刷票,同时保证是人在操作.

下面是百度"知道"的回答:

图形验证码是验证码的一种。验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。

 

(2)自动化攻击会有什么后果

(a)增加服务器负担

比如攻击登录接口,导致真正需要登录的用户登录不了.

(b)垃圾数据

因为是机器自动化操作的,不是真正的用户.所以这些数据么有用

(c)消耗资源

比如发送短信是收费的,如果机器自动化攻击,就会浪费短信资源

 

(3)自动化攻击的目的

(a)增加服务器负担,搞垮服务器

(b)破解登录密码(使用不同的密码不断尝试登录)

(4)图形验证码解决如下问题:

(a)减轻服务器负担

(b)减少垃圾数据

(c)节约资源(防止乱发短信)

(d)防止暴力破解

(e)揪出使用外挂的用户

(5)哪些接口需要图形验证码

增,改的接口:比如注册

鉴权相关的:比如登录,找回密码

 

 

(6)哪些场景需要图形验证码

(a)失败次数过多

比如登录3次,都失败,就可以怀疑是暴力破解

(b)使用有限资源过多

比如注册时,发送了3次短信验证码

 

(7)使用图形验证码的原则

不能严重影响正常用户的使用

注意:图形验证码是为了防坏人的.它会对正常用户的使用造成不方便,但是应该尽量减少对正常用户的影响.

 

(8)图形验证码与什么挂钩(绑定)

(a)ip

(b)浏览器cookie (咱们用的就是cookie)

(c)手机号

 

(9)详细设计

拿登录举例,连续三次登录失败,则显示图形验证码



 

 

第四次登录时就必须输入图形验证码了. 

 

后台的校验规则(优先级由高到低):

(1)判断是否需要校验图形验证码,如果需要校验,则首先校验图形验证码

(2)只要传入了图形验证码并且服务器端图形验证码不为空,则校验

(3)如果不需要校验,且没有传入图形验证码,则不校验

 

是否需要图形验证码这个信息应该记在什么地方

项目中出现一个问题:

在登录界面,连续三次登录失败,就会出现图形验证码,但是刷新页面之后,却没有出现图形验证码.

解决方案:

可以增加一个接口,返回是否需要校验图形验证码.

 

 另外一种设计:过多长时间之后不再出现图形验证码

即,设置校验图形验证码的有效期(区别于图形验证码的有效期)

相关文章
|
2月前
|
C#
C# 图形验证码实现登录校验代码
C# 图形验证码实现登录校验代码
89 2
|
7月前
|
自然语言处理 网络安全 C#
C# 生成图形验证码
C# 生成图形验证码
|
数据采集 算法 开发者
如何使用Python爬虫处理多种类型的滑动验证码
如何使用Python爬虫处理多种类型的滑动验证码
|
7月前
|
数据采集 文字识别 开发者
Python爬虫之图形验证码的识别
python爬虫逆向图形验证码分析,处理和测试实战。
155 0
|
前端开发 安全 Java
一款超好用的开源的图形验证码:EasyCaptcha
一款超好用的开源的图形验证码:EasyCaptcha
987 0
|
前端开发
图形验证码验证行式的笔记
最近在做关于验证码项目的时候,从交互的角度梳理了验证码的验证行式,今天总结一下验证码在产品中出现的验证行式。
图形验证码验证行式的笔记
|
安全 C# 数据安全/隐私保护
C#图形验证码
图形验证码在生活中得到了广泛的应用,在很多登录页面都可以看到验证码的身影。之所以如此,是因为图形验证码可以隔绝不法分子的密码爆破,对我们的登录过程起到了至关重要的保护作用。
C#图形验证码
|
前端开发
图形验证码
图形验证码,防止恶意攻击者采用恶意工具批量注册账号或大量频繁调用某些请求,给服务器造成压力,占用大量的系统资源。本文介绍如何实现图形验证码?
图形验证码
KgCaptcha 图形验证码自定义验证行式
图形验证码是一种很常见的行为验证码,其中滑动拼图,用户只需要轻轻滑动滑块填充拼图,即可完成安全验证。通常包括嵌入式、触发式和弹出式三种形式。
KgCaptcha 图形验证码自定义验证行式
|
Java 开发工具
使用Java实现图形验证码,原来还可以这样!
Java图形验证码,支持自定义图片、中文、算术等类型,可用于Java Web、JavaSE等项目。真香
使用Java实现图形验证码,原来还可以这样!