系统使用验证码主要是意图一般有两个个目的,即辅助身份验证(短信或邮箱验证码)和防止攻击者利用自动化脚本恶意攻击网站(数字,图片,视频,行为式等验证码)。
验证码的生命周期
验证码的目的为辅助验证和防止脚本攻击,其生成和销毁的时机以及其是否容易被攻击者猜测和破解是其能否达成设计目的的根本
Step 1:后端识别验证码生成时机,并生成验证码,并设置其失效时机,将验证码返回给用户
Step 2:用户使用验证码进行对应验证操作
Step 3:验证完成后(无论对应验证请求是成功还是失败),验证码销毁,再次使用此验证码进行验证时将作为无效验证码处理
Step 4:到达验证码失效时间后,验证码销毁,再次使用此验证码进行验证时将作为无效验证码处理
以下为验证码设计中常见安全缺陷,在没有特殊标识的情况下,“验证码”指所有验证码
常见问题汇总
验证码由前端生成
验证码由客户端生成是指前端的JS生成验证码并在前端验证,或者将前端生成的样子内容发送给后端工段进行验证,这样的方式并不安全,因为前端的安全性无法保证,攻击者可以篡改JS代码或绕过客户端验证,或固定验证码内容来进行验证码的绕过。
严重程度
中
测试方法
1、观察在获取验证码过程是否给后端发送请求,并由后端返回验证码信息,如没有给后端发送请求则存在安全问题
修复建议
验证码的生成也验证都应在后端进行
出现阶段:Step 1:后端识别验证码生成时机,并生成验证码,并设置其失效时间,将验证码返回给用户
重复的获取短信验证码
在设计短信验证码时没有对短信验证码的请求频次进行限制,导致攻击者可以利用次特性进行短信轰炸,或耗尽服务资源

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

被折叠的 条评论
为什么被折叠?



