验证码的前世此生(前世篇)

常在网上晃悠的人,对上面这张图都不会陌生。特别是在注册新帐号、确认交易时,它们都会频繁出现,要求咱们输入正确的验证码,那这些看上去跟咱们要作的事情彻底无关的验证码到底有何做用呢?html

常在网上晃悠的人,对上面这张图都不会陌生。特别是在注册新帐号、确认交易时,它们都会频繁出现,要求咱们输入正确的验证码,那这些看上去跟咱们要作的事情彻底无关的验证码到底有何做用呢?cookie

0×1 诞生

首先,先介绍下验证码程序的提出者,路易斯·冯·安(Luis von Ahn)。2002年,路易斯和他的小伙伴在卡内基梅隆第一次提出了CAPTCHA(验证码)这样一个程序概念。该程序是指,向请求的发起方提出问题,能正确回答的便是人类,反之则为机器。这个程序基于这样一个重要假设:提出的问题要容易被人类解答,而且让机器没法解答。网站

在当时的条件下,识别扭曲的图形,对于机器来讲仍是一个很艰难的任务,而对于人来讲,则相对能够接受。yahoo在当时第一个应用了图形化验证码这个产品,很快解决了yahoo邮箱上的垃圾邮件问题,所以图形类验证码开始了大发展时期。ui

0×2 发展与问题

图形化验证码在被证实有效后,在互联网上迅速获得了推广。国内外各大网站,在关键的业务点上都加入了这一类型的验证码。spa

首先,因为开发者水平的参差不齐,致使验证码自己的实现存在问题,从而致使漏洞能够绕过,常见的有如下几种类型:htm

[1] 验证码的生成逻辑、答案用户可见

如将验证码答案输出到页面中、写在cookie里。打比方就是说,在发卷的时候,把答案写在了卷子背面。(老师不再用担忧个人成绩)blog

[2] 验证码的生命周期未控制好

如验证码能够重复使用、不设超时。验证一次,永久使用。生命周期

[3] 业务逻辑与验证码结合点存在问题

如修改业务参数可致使不用校验验证码也可经过、甚至验证码就是摆设。结合到具体的业务点上有什么危害呢?图片

a. 验证码写在cookie中。此处可致使旅客信息泄露。开发

b. 验证码与图片存在对应关系,所以直接访问html便可获得答案。此处可致使撞库与暴力破解密码。

 

(上述两例转自乌云)

0×3 图片验证码对抗与攻击升级

在开篇咱们提到了一个重要的假设:

CAPTCHA提出的问题要容易被人类解答,而且让机器没法解答。

实际上,CAPTCHA所要处理的问题是:将普通人与恶意的用户(黑客、垃圾消息发送者)区分开来。那当时间点到达2016年时,黑客们与普通用户之间的差距已经很大了(想象下中国足球队对巴西足球队,并且此时留给中国队的时间已经很少了)。

所以,CAPTCHA在图片验证码这一应用点上已经没法知足这一假设了。在这段时间内,出现了不少的增强和识别图形验证码的方法(每一种方法的详细原理和解释,能够参见wooyun drops,在此不作详述):

附上部分名词解释:

》》》查看完整内容

相关文章
相关标签/搜索