提问式图片验证码设计
可以将图片验证码与具体的问题相结合,让用户识别图片内容的同时,还需要回答指定问题,来增加机器破解的难度。
图7-6所示的提问式图片验证码,可以随机产生各种问题,然后生成图片验证码,再要求用户回答。这种验证码的破解难度相对较高,必须通过以下3个步骤才能完成破解。
(1) 机器人要通过OCR技术准确地识别出图片中的汉字,提取出问题。
(2) 对于机器人而言,这些问题就是一堆字符,没有具体含义,它必须进行词法分析、语义分析,再查找对应的答案。这就需要机器人具有一定的人工智能,通过大量的训练才能够完成。
(3) 机器人可能会找到多种答案,逐一尝试,直到通过校验为止。所以,为了防止机器人反复重试答案,可以在回答错误之后自动更换问题。
图7-6 提问式图片验证码
提问式图片验证码的设计并无复杂之处,如图7-7所示,只需要增加一个题库,用来存储问题和答案,客户端获取验证码时,则随机从题库中抽取一道题目生成图片验证码即可。题库中的问题越多,安全性越高,防止被机器人穷举攻击(尝试所有问题和答案)。
图7-7 提问式图片验证码设计
这种验证码比较适用于专业垂直类系统,可以针对不同的专业和人群准备不同的题库。例如,医学类网站可以使用医学知识作为问题,计算机网站可以使用计算机知识作为问题。增加网站趣味性的同时,保证系统安全性。
提问式图片验证码的缺点在于增加了用户的操作成本,因为并不是所有问题用户都是知晓的,太过大众化的问题又降低了机器破解的难度。因为在人类使用时,基本和机器识别的过程相同,也需要先理解其含义,再去搜索出答案,然后再尝试。