检测方法:
1)验证码和用户名、密码是否一次性、同时提交给服务器验证,如果是分开提交、分开验证,则存在漏洞;
2)在服务器端,是否只有在验证码检验通过后才进行用户名和密码的检验,如果不是说明存在漏洞;
3)验证码是否为图片形式且在一张图片中,不为图片形式或不在一张图片中,说明存在漏洞;
4)生成的验证码是否可以通过html源代码查看到,如果可以说明存在漏洞;
5)生成验证码的模块是否根据提供的参数生成验证码,如果是说明存在漏洞;
6)请求10次观察验证码是否随机生成,如果存在一定的规律(例如5次后出现同一验证码)说明存在漏洞;
7)观察验证码图片中背景是否存在无规律的点或线条,如果背景为纯色(例如只有白色)说明存在漏洞(可识别);
8)验证码在认证一次后是否立即失效
解决方法:
图片验证码的生成要足够随机,6位以上,至少包含数字与字母,存在干扰背景;验证码业务在验证时要先检查验证码,再进行业务检查;验证码使用一次要立即失效(无论请求是否成功)。