我们现在使用的验证手段都是以验证码为主,让用户根据图片输入验证字符,这种方法的安全度尚可,但会给用户带来一些不便和困扰,比如这个雅虎的验证码:
这个安全度很高,机器和人都无法正确识别了。
其实要让人看得懂、机器看得晕,只要拿出我们人类的强项就可以了啊——影像识别,试想用图片来做验证是不是会很好呢:
上面的示例演示了图片验证的界面。用户进行验证时的操作很简单,只需点选图像所属的类别就可以了,还可以顺道欣赏一下图片,很是惬意;而机器急大了头也很难理解图片的内容吧?
有人说可以用复杂的瞳孔识别、面部识别等技术确定是否属于人物类,我想那也只是人物类,还得是带有正面面部的照片,而且有时可能会将大猩猩也归为人类,假如再把人物细分成了男性和女性两种分类,机器又要头大了。
如果还不放心的话,还可以为输出的图片添加干扰,给机器火上浇油:
这样加入干扰之后,对人类来说几乎没有增加任何识别难度,机器就苦恼得不行了。
定期重置随机干扰的话,还可以避免机器将图片收录后重复调用。
还有一个防止收录的办法就是不断更换与扩充图库,不过一般懒蛋型站长通常不喜欢经常这样做,我在这里就建议各种提供图片服务的网站(比如Picasa)来担起此任务,对外提供图片验证服务,用丰富的图片资源为其他网站服务,而用户如果觉得图片有趣的话,也会点击“显示原始大图”链接造访到提供服务的网站的哦。
当然,除了影像识别之外,人脑还擅长很多别的工作,比如声音识别、词语联想、内容理解等等,各位也可想想更好的验证方案,使网站在提升安全度的同时,为用户带来更加人性化的体验。
下载本文的PDF版本:http://uushare.com/user/icesee/file/1265130
答疑:
--引用--------------------------------------------------
YangQ: 提以下几个问题:
1、加载这么大一幅图片的时间和带宽是加载一副验证码的多少倍?
2、这么几个选项用机器暴力破解台容易了,就算没提交一次就换一副图验证,机器蒙对的概率也是相当高的~
3、关键的问题,这些图片的必须经过人工来处理再录入数据库,选项也得人工录入,因为机器本身就很难识别哪些是人哪些是物。
这些问题如何解决?
--------------------------------------------------------
各位的疑点都差不多啊,我来回答一下吧:
1、图片不一定非要这么大,以人能看清楚为主,带宽开销不是很变态吧?正常你网站里也有很多图片被访问到的啊,比如论坛、图片站的话本身就比这个开销大很多倍了。再者如果按我说的由第三方提供服务的话,就更没有问题了。
2、选项可以增加的,图库可以不断扩充的,假如随机100张图,再加上随机的干扰,机器根本无法知道哪个图曾经出现过,何谈爆破?乱点的确可能猜对,但是防爆破的手段肯定是有的啊,比如重试间隔和最大重试次数限制,尤其是这种对于人类来说非常简单的验证方式,其对重试的要求可以更为苛严很多也不会影响使用。
3、人工录入并不是什么大不了的劳动量吧,无非就是找张图片上传并选择分类,每天弄两张,日积月累就比较可观了,足以应付大多数情况。
本文转自斯克迪亚博客园博客,原文链接:http://www.cnblogs.com/SkyD/archive/2009/02/02/1382248.html,如需转载请自行联系原作者