请求头内容
虽然这种改进的验证方式方便了许多用户,不用再像12306网站那样需要用户痛苦地从一堆图案中选中目标对象物体,但遗憾的是,这种验证和识别类验证码相比,安全性上并没有得到很大提高。
这些数据的加密由前端js代码来完成,js代码可以通过浏览器自带的开发者工具抓包获得。这就说明,理论上可以逆向分析这些代码并找出加密逻辑,进而伪造请求数据。虽然有的js代码会被混淆得难以阅读,但各路大佬们又见招拆招,发明出了反混淆工具,还原js代码。
可以说,这种对抗自从验证码出现以来就从未停止。
2
验证码的演变过程
验证码的起源可以追溯到1997年,Altavista公司的利利布里奇等程序员为了阻止黑客入侵后台,首创了扭曲字母验证码。
来源丨ifanr
直到现在,这类验证码依然是一些网站的主要验证方式,过于扭曲的字母常常迫使显示器前的人们摇头晃脑,左右扭动地去辨认目标对象。
验证码真正拥有姓名是在2003年,路易斯·冯·安(Luis von Ahn)斯团队在卡内基梅隆大学提出了“验证码(CAPTCHA)”这样一个程序概念。CAPTCHA是英文“Completely Automated Public Turing Test to Tell Computers and Humans Apart”的首字母简写,其中文含义是全自动区分计算机和人类的公开图灵测试。
在CAPTCHA测试中,电脑会自动生成一个问题让使用者来解答,由于机器无法回答出CAPTCHA的问题,所以逻辑反推,能回答出问题的使用者即可视为人类。
随着安全防护与破解入侵两方面抗衡的日益升级,验证码的识别难度在增加,形式也在多样化。从诞生到现在,验证码主要有这几类:短信验证码、语音验证码、图形验证码、问题验证码、滑动点选验证码等等。
>>>>短信验证码
人们可以拿手机查看验证码进行登录操作,而程序/机器人想要进行这种自动化的操作会比较复杂。
来源丨jhkjsms.com
>>>>语音验证码
人类可以接电话听声音,且为了防止语音辨识软件分析声音,语音内容会掺有杂音或者做出一定程度内仍可以被人类接受的变声。
来源丨cloud.juphoon.com
>>>>图形验证码
图像验证会故意模糊中心位置,使用非程序可识别文字来达到防止机器识别的目的;视力障碍人群可选择语音验证方式。
如图,Image Turker 和 Audio Turker分别表示识别图像和语音验证码的人类。authorize.net 图像验证码是最简单的,而 google.com 音频验证码最难。