随着验证码的推广和使用,网上各式各样的人也在发表着言论,大家貌似都在呐喊着一个声音:老子什么时候才能不用输入验证码???很显然,说这些话的人都是不明白验证码真正的用意是什么,为什么要使用验证码呢?要想知道答案就继续往下看吧!
什么是验证码?
验证码(CAPTCHA)是一种区分用户是计算机还是人的公共全自动程序。其实就是将一串随机产生的数字或符号,生成一幅图片, 图片里加上一些干扰,例如随机画数条直线,画一些点(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。
验证码可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。
验证码的作用
1、防止恶意破解密码
2、防刷票
3、防论坛灌水
4、防止恶意注册
以防论坛灌水为例,有时你的Web站会碰到客户机的恶意攻击,其中一种很常见的攻击手段就是身份欺骗,它通过在客户端脚本写入一些代码,然后利用其客户机在网站,论坛反复登陆,或者攻击者创建一个HTML窗体,其窗体如包含了你注册窗体或发帖窗体等相同的字段,然后利用"http-post"传输数据到服务器,服务器会执行相应的创建帐户,提交垃圾数据等操作,如果服务器本身不能有效验证并拒绝此非法操作,它会很严重耗费其系统资源,降低网站性能甚至使程序崩溃。
验证码的分类
1、纯文本式验证码(比较原始的一种)
这种验证码并不符合验证码的定义,因为只有自动生成的问题才能用做验证码,这种文字验证码都是从题库里选择出来的,数量有限。破解方式也很简单。这种验证码也不是一无是处,对于很多见到表单就来一发的spam bot来说,实在没必要单独为了一个网站下那么大功夫。对于铁了心要在你的网站大量灌水的人,这种验证码和没有一样。
2、图片验证码
这类验证码也是现在主流的验证码,这类图片验证码的原理就是通过字符的粘连增加及其识别的难度。它是由一串随机产生的数字或符号,生成一幅图片, 图片里加上一些干扰,例如随机画数条直线,画一些点。从而加大机器识别的难度,人类通过肉眼就可以比较容易的识别。
3、问题验证码
问题验证码主要是以问答式的形式来进行填写。它的查看比加模验证码更容易辨别和录入,系统可以生成诸如“1+2=?”的问题让用户进行回答,当然这样的问题是随机生成的。另一种问题验证码,则是文字式的问题验证码,诸如生成问题“中国的全称是什么?”比如CSDN发表或保存时就需要通过简单的加减乘除计算来提交。这种方式比上面两种更安全了。
例:12306网站新验证码
对于验证码的验证方式,不得不提的就是12306推出的新的验证方式,在你购票登录时会出现这样的验证码,如图所示:
很明显的可以看到,它不光将问题设置为了图片,把问题的选项都设置成了图片的样式,如果仅凭肉眼,很容易识别哪个是“话梅”,但如果是机器识别,“话梅”这两个字可能比较容易识别,但是要选匹配的图片,这里面的信息量可就大的多了,想要自动刷票就变得很难实现。据悉,12306验证码改版后,目前所有抢票工具都已经无法登陆。
总结:
看完这篇文章,我相信那些讨厌验证码的人也一定会对此改观,任何事物的存在都是有意义的,一个小小的验证码里面也有如此多的学问,虽然有时老输它会很麻烦,但在某种程度上它给我们的生活带了一定的安全。验证码就像一道屏障,让那些黑客望而却步。即使黑客的破解技术在提高,但是验证码的验证方式也在不断地改进。