逻辑漏洞 - 图形验证码安全

  在如今的各类系统中,验证码成为了常见的安全验证手段,然而验证码同样存在诸多安全问题,这里把验证码安全分成图形验证码安全、短信验证码安全
  图形验证码安全:失效验证码、万能验证码、验证码可识别、验证码Dos(详见拒绝服务模块)

漏洞场景:验证码失效

tips
  验证码失效:验证码应具备合理的时效性,但如果有效期设置过长,可能导致验证码在一段时间内被重用或滥用。此外,如果验证码校验失败后未及时清除旧的验证码记录,都有可能带来安全隐患
测试结果

                                        

缺陷代码

漏洞场景:万能验证码

tips
  万能验证码:研发人员为了测试方便,常会设置固定的万能验证码(如6666、123456、888888等)。但在业务上线后,由于疏忽未及时清除这些设置,从而造成验证码"可绕过"
测试结果

                                        

缺陷代码

漏洞场景:验证码可识别

tips
验证码可识别:4位数验证码可通过ocr工具进行识别爆破
项目地址:https://github.com/sml2h3/ddddocr
教程:https://www.52pojie.cn/thread-1944555-1-1.html
测试结果

                                        

缺陷代码

安全场景:多因素校验

tips
安全编码规范:
    1、有效期检查:设置验证码的有效期为1分钟,确保过期的验证码无法使用,防止攻击者重复利用
    2、验证与清除:在验证完成后,无论成功或失败,都会及时清除验证码,避免被复用
    3、复杂度提升:将验证码设置为6位,增加识别和破解的难度,提高攻击成本
测试结果

                                        

安全代码