验证码自动识别测试
前面几小节介绍的测试方法主要针对业务逻辑设计上存在缺陷的验证码机制,而事实 上还有很大一部分验证码机制在逻辑上并不存在问题,这就涉及与验证码机制本身的正面 对抗,也就是验证码识别技术。 网站登录页面所使用的图形验证码是出现最早也是使用最为广泛的验证码,我们就以
图形验证码为例来讲解如何对其进行自动识别。 一般对于此类验证码的识别流程为:图像二值化处理→去干扰→字符分割→字符识 别。 图像二值化就是将图像上像素点的灰度值设置为0或255,也就是将整个图像呈现出明 显的黑白效果。 为了防止验证码被自动识别,通常用加入一些点、线、色彩之类的方式进行图像干 扰,如下图:
所以为了达到良好的识别效果,需要对图像进行去干扰处理。 字符分割主要包括从验证码图像中分割出字符区域,以及把字符区域划分成单个字
符。
字符识别就是把处理后的图片还原回字符文本的过程。
修复建议
针对验证码被自动识别的风险,建议通过以下几个方面来进行加固:
(1)增加背景元素的干扰,如背景色、背景字母等;
(2)字符的字体进行扭曲、粘连;
(3)使用公式、逻辑验证方法等作为验证码,如四则运算法、问答题等;
(4)图形验证码和使用者相关,比如选择联系人头像、选择购买过的物品等作为验 证码。