`

图形验证码最佳实践

阅读更多

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)如果不需要校验,且没有传入图形验证码,则不校验

 

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

项目中出现一个问题:

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

解决方案:

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

 

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

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

 

  • 大小: 18.6 KB
  • 大小: 17.5 KB
  • 大小: 24 KB
0
0
分享到:
评论

相关推荐

    vue3-captcha(vue3行为验证码)

    Vue3-Captcha是一款专为Vue3框架设计的行为验证码插件,旨在提高网站的安全...Vue3-Captcha的开发涉及到了Vue3框架的多个核心概念和最佳实践,对于熟悉Vue3的开发者来说,这是一个深入了解Vue3特性和组件开发的好例子。

    短信验证码模型网页填写

    此外,使用图形验证码、设备指纹等多因素认证方式也能增强系统的安全性。 总的来说,短信验证码模型网页填写涉及的技术和安全措施是构建可靠网络服务的重要组成部分,但同时也需要防范其可能带来的安全风险和滥用...

    短信验证码

    8. **用户指南**:SMSSDK_User_Guide.URL指向的可能是用户指南的在线链接,提供详细的SDK使用教程和最佳实践。 短信验证码虽然常见,但需要注意以下几点安全问题: - 验证码的有效期:限制验证码的生命周期,防止被...

    asp.net 验证码生成(含源码)

    7. **验证码安全最佳实践**:定期更换验证码模板,限制验证码的尝试次数,结合其他验证机制(如短信验证码),以提高安全性。 总之,ASP.NET验证码生成是一个涉及图像处理、随机数生成、服务器验证等多个技术领域的...

    5款实用的jQuery验证码插件

    对于那些希望避免图形验证码的网站,Math Captcha提供了一个基于数学问题的验证方法。用户需要解决简单的算术问题来证明他们是人类。这种插件利用jQuery的动态效果和事件处理,使得验证过程更加友好。 这些jQuery...

    正方系统3000张验证码

    总的来说,这个3000张正方系统验证码的数据集为研究者提供了实践和优化图像识别算法的宝贵机会,对于推动人工智能在验证码识别领域的进步有着重要的意义。无论是对于学术研究还是工业应用,这都是一份不可多得的教育...

    VB验证码程序

    8. **代码优化**:为了提高验证码的安全性和效率,VB代码应遵循最佳实践,例如避免硬编码敏感信息,确保内存管理得当,以及优化图像生成算法。 在VB中实现验证码程序需要对图形处理、网络通信和用户交互有一定的...

    IOS验证码

    9. **安全最佳实践**:确保验证码传输过程中的安全性,使用HTTPS协议加密通信,防止中间人攻击。另外,定期更换服务器端的验证码生成算法,以应对可能的破解尝试。 通过以上步骤,我们可以为iOS应用构建一套完整的...

    SpringSecurity实现表单安全登录、图形验证的校验、记住我时长控制机制、第三方登录

    此外,为了确保安全,还需要考虑如CSRF攻击的防护、密码加密存储等最佳实践。SpringSecurity提供了丰富的API和扩展点,使得我们能够根据项目需求灵活定制安全策略。 通过以上介绍,我们可以看到SpringSecurity在...

    JSP编程验证码登陆系统

    5. **安全最佳实践** 在实际应用中,为了增强安全性,还需要考虑其他因素,如使用HTTPS加密通信、限制登录尝试次数、添加密码哈希和加盐等。 6. **文件结构与部署** 这个登录系统可能包含多个JSP文件(如login....

    Desktop_php实现google验证码_

    Google Authenticator是一款广受欢迎的两步验证工具,它为用户提供了一种增强的安全验证方式。... 首先,Google Authenticator...在开发过程中,需要确保代码的健壮性和安全性,遵循最佳实践,以提供一个可靠的验证系统。

    Android-安卓中的图片验证码控件

    6. 设计最佳实践: - 确保可读性:验证码应易于人类识别,但难于机器识别,找到这个平衡点很重要。 - 响应式设计:验证码控件应适应不同的屏幕尺寸和方向。 - 可访问性:考虑到视力障碍用户,可以提供音频验证码...

    基于java的开发源码-验证码生成库 JCaptcha.zip

    4. **安全最佳实践**:理解验证码在防止自动化攻击中的作用,以及如何通过定期更新策略来提升安全性。 5. **无障碍设计**:考虑视觉障碍用户的可访问性,如提供音频验证码选项。 ### 扩展应用 除了基本的图形验证码...

    验证码-ASP.zip

    8. **安全考虑**:虽然这是一个简单的验证码系统,但还需要注意一些安全最佳实践,比如定期更换验证码,限制验证码的使用次数,以及防止Session劫持等。 9. **文件结构**:根据压缩包中只有一个名为"asp验证码"的...

    jcaptcha写验证码要用到的jar包

    Jcaptcha的核心功能包括生成随机且难以自动识别的图形验证码,以及验证用户输入的验证码是否与生成的原始验证码匹配。以下是对Jcaptcha使用过程中涉及的关键知识点的详细说明: 1. **安装和引入Jcaptcha库**: - ...

    Android高级应用源码-Android随机验证码.zip

    在这个项目中,开发者可能探讨了如何在Android系统上生成和验证这种随机生成的图形验证码。 【描述】描述中提到的".zip"文件可能包含了整个项目的所有资源,包括源代码、图片资源、配置文件等。这通常是开发者为了...

    js验证码

    10. **安全最佳实践**:在实际部署时,前端验证码只能提供初步保护,更强大的安全措施应包括服务器端验证,防止被绕过。同时,应定期更新验证码策略,以应对新的攻击手段。 通过深入学习和实践这些知识点,开发者...

    jsp做的彩色随即验证码(超实用)

    在IT行业中,验证码是一种常见的安全机制,用于防止自动化的机器人或恶意软件进行非法操作,比如批量注册、垃圾信息发布等。...因此,了解和应用相关的安全最佳实践也是开发此类系统时不可或缺的一部分。

    易语言qifan验证码识别

    易语言是一种专为中国人设计的编程语言,它的目标是让编程变得简单、直观,使得非专业程序员也能快速上手。...在实践中,开发者需要结合理论知识与易语言的实际功能,不断实验和优化,以实现最佳的验证码识别效果。

    html5点击刷新验证码特效.zip

    这个特效的实现还可能涉及一些最佳实践,比如无障碍性( Accessibility ),确保即使视觉障碍的用户也能通过屏幕阅读器理解验证码。此外,为了安全起见,验证码通常需要有一定的复杂度和短暂的有效期,以防止被破解...

Global site tag (gtag.js) - Google Analytics