科普好文:常见验证码的弱点与验证码识别实例详细解说发表于2年前|作者:seay|分类:科普专线,编程开发|孵化于:2013年06月18日|文章热度:4,108次全屏阅读显示不全请点击全屏阅读0x00简介验证码作为一种辅助安全手段在Web安全中有着特殊的地位,验证码安全和web应用中的众多漏洞相比似乎微不足道,但是千里之堤毁于蚁穴,有些时候如果能绕过验证码,则可以把手动变为自动,对于Web安全检测有很大的帮助
全自动区分计算机和人类的图灵测试(英语:CompletelyAutomatedPublicTuringtesttotellComputersandHumansApart,简称CAPTCHA),俗称验证码,是一种区分用户是计算机和人的公共全自动程序
在CAPTCHA测试中,作为服务器的计算机会自动生成一个问题由用户来解答
这个问题可以由计算机生成并评判,但是必须只有人类才能解答
由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类
(fromwikipedia)大部分验证码的设计者都不知道为什么要用到验证码,或者对于如何检验验证码的强度没有任何概念
大多数验证码在实现的时候只是把文字印到背景稍微复杂点的图片上就完事了,程序员没有从根本上了解验证码的设计理念
验证码的形式多种多样,先介绍最简单的纯文本验证码
纯文本验证码纯文本,输出具有固定格式,数量有限,例如:
本论坛的域名是
今天是星期几
复杂点的数学运算这种验证码并不符合验证码的定义,因为只有自动生成的问题才能用做验证码,这种文字验证码都是从题库里选择出来的,数量有限
破解方式也很简单,多刷新几次,建立题库和对应的答案,用正则从网页里抓取问题,寻找匹配的答案后破解
也有些用随机生成的数学公式,比如随机数[+-*/]随机运算符随机数=
,小学生水平的程序员也可以搞定⋯⋯这种验证码