已解决问题 - 浏览1081次
下一个已解决问题关于验证码..
现在验证码作为一种安全保障手段被广泛的应用于网络的各个方面...
不过..这验证码究竟是干什么用的啊...?我是说,通过使用验证码可以起到什么样的作用~~?
为什么验证码都是图片形式?为什么很多验证码都故意做的很不容易辨认和输入?
请高人解答...
最佳答案 - 由提问者2006-11-26 17:07:49选出
简单地来说,验证码就是网站为了防止用户利用机器人自动注册、登录、灌水而采用的一种网络编程安全技术。
实质上,所谓的验证码,是通过网站编程实现的一项简单的功能,它就是将一串随机产生的数字或符号,生成一幅图片, 图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。图形验证码越多干扰色,程序越难把字码认出来。通常用的干扰色都有: 随机文字颜色,随机颜色底纹,随机文字位置,随机文字大小,随机背景花纹,还可以加上一些雪花的效果。验证码的运行机制是在需要用户通过填写表单与服务器交互时,在随机产生验证码的同时生成一个Session,然后通过表单递交数据与Session中保存的验证码进行比较,正确即验证码通过,否则出错提示。
也许你会问,为何要用图片显示验证码?这是因为某些猜解工具可以从客户端html文件中的源码读取页面,所以直接用文本做验证码并不安全,而图形的验证码则需要捕捉图像之后再进行处理,安全性相对较高。
也许你又会问,既然有可能读取页面,那么,Session中的验证码信息不也一样可能被盗取吗?不要忘记Session是一个私有变量,而html是程序的产物,而不是程序的本身,他们没可能在html中窥见程序的过程,就好像你无法知道一个乘积数值是由哪两个特定的数相乘得来的一样。网站在服务器计算出验证码,再根据验证码来选择图片给客户端,除非攻击者注册了几万次,把所有符号中每一个符号的几种图片都看过,并知道每个图片的文件名,他们就有可能用程序去计算验证码了。可是一旦遇到动态生成图片名的,那他们就没指望了。因为html中唯一和验证码有关系的就是显示验证码的图片名。举例说,有个1.gif的图片,如果算到有1这个符号,我们却把1.gif 复制成 1435793874.gif再让网页嵌入这个图片,攻击者就无机可乘了。
网站运用验证码技术保证登录安全,就等于在用户账号密码验证之外多加了一道严密的封锁墙,可防止穷举算法竞猜获取用户账号密码,而论坛上发帖的验证码与其工作原理相似,并且不需要进行密码验证。验证码技术所处的网络安全层次以及用户登录安全流程如图所示。
验证码技术现存的问题
道高一尺,魔高一丈,新的问题总在不断地出现,随着人们对验证码破解方法的研究与探索,验证码自身也出现了不少漏洞。
1. 验证码图片上虽有噪音点(指验证码图片上的斑点),但此噪音是固定的,不是随机的,很容易识别。现在发展的验证码识别技术,可以很简单地完成图文识别,达到百分之百的准确。利用此技术,可以在论坛嵌入恶意代码,甚至植入病毒,盗取点击者的机密信息等,操作简单而又针对性,即使识别验证码的过程比较慢,但基本上不防碍发信息的效率。有专家预测,如果论坛系统维护者对这些问题视若无睹,那么这一论坛网络应用将成为未来最大的网络病毒传播和滋生的源头。
2. 验证码是由脚本程序生成的,但很多时候生成算法又不够复杂,导致其验证图片上面的数字完全可以由产生它的链接地址直接计算得出。
3. 很多用户在实际应用中都会遇到验证码无法显示,或是验证码显示不完全的情况,导致不能登录,消息发送失败,甚至不能够买产品或服务。
4. 给显示验证码的图片添加杂点,这虽然给识别程序带来了极高的代价,但同时也给用户肉眼识别造成了不少障碍,很多用户投诉,注册或登录一些网站用到的验证码,有的根本看不清楚,有的甚至连基本形状也猜想不到。
个性化的改进方案
上述问题大多都可以通过技术解决: 要增强安全性,并将验证码功能投入商业应用,则可以增加干扰参数,干扰参数每加一,穷举法的代价提高约100×100倍; 适当设定杂点几率以有效降低软件识别正确率;自由设定验证码位数,甚至可以自己修改字库,包括宽度、高度等,使得识别程序要付出的代价足够高。
然而,降低了用户的便利性这个严重的缺陷就不能运用纯技术的方法解决了。一个完美的关系营销,是绝对不会以牺牲客户的便利性来换取网络安全性的。可以预测,像这种安全措施对于电子商务而言并不科学,长此以往,必将引起用户的极大反感,特别是要求用户输入中英文和数字混排的验证码,即使安全性大大提高,可客户的便利性就大打折扣了。据目前网上的一些调查,越来越多的客户对这种以验证码登录或发帖表示厌烦,有的甚至表示极大的反感。
针对验证码的种种问题以及实现的相关功能,下面谈一种可能的解进方案:
第一道防线——判断灌水机
很多网站直接使用验证码的方法来防止垃圾信息的侵入,但是这种方法让访问者的感受大打折扣。为了防止攻击而给用户带来留言和注册的不便,有违新一代关系营销的原则。
通过用户留言或注册的过程研究,可采取以下方法初步隔绝灌水机恶意访问:
用户发帖或提交注册表单直接POST数据给最终处理数据的程序(比如叫 add.asp )的可能性为零,就是说,如果从 add.asp 中无法得到来路,则一定是灌水机无疑。另外,用户从进入填写留言的页面到点击提交按钮必定是有时间差的,因为用户需要打字,而灌水机程序一般不会等待这个时间。因此,可以用下面的方法判断灌水机:
1.当用户进入填写页面时,记住当时的时间。
2. 在处理用户提交数据的程序中,先判断是否有来路信息,没有来路信息的一定是垃圾信息。
3. 如果有来路信息,则判断用户进入时间和现在的时间差,如果太小,则仍然判断为垃圾信息。
对于杜绝恶意猜解盗取用户账号和密码,则可以借鉴于Google的实现方案,在注重安全的同时,还尽量考虑到了用户使用的方便性。Google往网站中添加了一个计数器,记录登录次数,常规情况下无须验证,一旦登录错误次数超过10 次,才弹出验证图片。
-
过客
222.213.100.*
hao
提问者对最佳答案的评价
感谢













