如何给别人讲清楚图片验证码的原理,通过打比方的方式通俗易懂解释图片验证码的作用及原理。
登录系统时图片验证码的原理,下面通过打比方的方式给你讲清楚。
用户要登录系统就好比要进入一个门上上锁的房间,用户名和密码就是要开锁的钥匙,锁子就是系统的安全验证机制。盗贼发明了一项技术,这项技术可以快速地造大量的钥匙,并且能快速地用这些钥匙试开锁子,如果钥匙足够多,且试开锁的速度足够快,盗贼在有限的时间内是可以打开门上的锁的(“暴力”破解密码),怎么去防这些盗贼?
有两个办法:(1)将锁上的钥匙孔形状造的足够复杂(加大密码复杂度),这样盗贼需要造更多的钥匙和试开更多的次数(本文先不讨论);(2)降低盗贼开锁的速度,减少有限时间内开锁的次数。下面说明第二个办法:
为了降低盗贼开锁的速度,主人在门前拴了一条看门狗(图片验证码安全机制),这只狗有一种特殊的能力,它会随机出一些简单的题,比如问你图片上的数字是多少、1+2=?等类型的问题,并能判断你的答案是否正确,开锁之前必须答对狗出的题,才能试开一次锁,这就在开锁之前增加了一道坎,盗贼的技术还没有那么智能,答对狗出的题还没那么容易,那贼的技术是可以去猜答案的,这又怎么防?
狗也不笨,狗说我的问题只能让你答一次,只要你回答错了,狗就换了另一个新问题(验证码的一次性),一直到你答对才能让你开一次锁。这样,贼的快速试开锁的技术就失效了。
总结:登录场景下图片验证码的作用是【防止单个用户在一定时间内多次提交大量登录请求,频繁触发服务器“用户名密码比对”运算,从而试出正确的用户名和密码,达到暴力破解密码的目的】。推广一下,就可以得出图片验证码的更广泛的作用是【防止单个用户在一定时间内多次提交大量业务请求,频繁触发服务器“有效业务”运算,从而达到消耗或得到系统珍贵的资源和价值的信息】。
验证码的两个关键点:(1)验证码的验证在前,密码和用户名的验证在后;(2)验证码有时效性,如:验证一次后就失效,客户端输入的码和服务端存的码比较一次后,服务端的码就失效了,输错了,下一次重新生成新的码,不给你猜的机会。
验证的功能不光能用在登录的业务场景下可以用到,需要对业务防暴力的场景都可以用,如购票、投票、互联网开放式的信息采集等。
本文首发于 GitChat,未经授权不得转载,转载需与 GitChat 联系。
阅读全文: http://gitbook.cn/gitchat/activity/5d622e0e2c1a845fb5c89db6
您还可以下载 CSDN 旗下精品原创内容社区 GitChat App ,阅读更多 GitChat 专享技术内容哦。