验证码常见安全问题与测试方法汇总

文章详细探讨了验证码在系统中的角色,包括其生成时机、验证流程和常见的安全问题,如前端生成的风险、验证码复杂度不足、重复获取、识别和绕过等。提出后端生成和验证、设置失效时间、限制请求频率和增强验证码复杂性的修复建议。

系统使用验证码主要是意图一般有两个个目的,即辅助身份验证(短信或邮箱验证码)和防止攻击者利用自动化脚本恶意攻击网站(数字,图片,视频,行为式等验证码)。

验证码的生命周期

验证码的目的为辅助验证和防止脚本攻击,其生成和销毁的时机以及其是否容易被攻击者猜测和破解是其能否达成设计目的的根本
Step 1:后端识别验证码生成时机,并生成验证码,并设置其失效时机,将验证码返回给用户
Step 2:用户使用验证码进行对应验证操作
Step 3:验证完成后(无论对应验证请求是成功还是失败),验证码销毁,再次使用此验证码进行验证时将作为无效验证码处理
Step 4:到达验证码失效时间后,验证码销毁,再次使用此验证码进行验证时将作为无效验证码处理
以下为验证码设计中常见安全缺陷,在没有特殊标识的情况下,“验证码”指所有验证码

常见问题汇总

验证码由前端生成

验证码由客户端生成是指前端的JS生成验证码并在前端验证,或者将前端生成的样子内容发送给后端工段进行验证,这样的方式并不安全,因为前端的安全性无法保证,攻击者可以篡改JS代码或绕过客户端验证,或固定验证码内容来进行验证码的绕过。

严重程度

测试方法

1、观察在获取验证码过程是否给后端发送请求,并由后端返回验证码信息,如没有给后端发送请求则存在安全问题

修复建议

验证码的生成也验证都应在后端进行
出现阶段:Step 1:后端识别验证码生成时机,并生成验证码,并设置其失效时间,将验证码返回给用户

重复的获取短信验证码

在设计短信验证码时没有对短信验证码的请求频次进行限制,导致攻击者可以利用次特性进行短信轰炸,或耗尽服务资源

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方寸明光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值