验证码从设计之初就是为了区分人与计算机,计算机识别难度较大,而人可以轻易识别,常用于身份校验、交易确认等关键环节。当下的网络生产生活中:暴力猜测登陆、暴力破解密码、垃圾广告、灌水等在网络中泛滥,不仅消耗了大量的服务器资源,同时也可能威胁到服务器的安全,因此,验证码作为一种实用高效技术被大量使用起来。
下面介绍下互联网应用中常见的验证码应用:
传统输入式验证码
主要是通过用户输入图片中的字母、数字、汉字等进行验证。
原理:向服务端请求,生成随机的字符,写入会话请求,同时将随机字符生成对应图片,响应给前端;前端输入对应字符的验证码,向后台发起校验。
特点:简单易操作,人机交互性较好。但安全系数低,容易被破解。采用OCR技术可轻松破解。
短信验证码
通过输入有效手机号,获取短信验证码来验证用户的有效性,配合验证码的时效性,大大提高用户的真实性。
代表:移动APP较多的采用此方式
特点:简单便捷,有效识别真实手机号。会产生显性的短信成本。
输入式的图形验证码
有精美的图形,文本内容清晰可见,专注于广告展现。
代表:Solve Media
原理:实现方式同上,只不过是融入了广告元素在其中,无形中创收,佩服想出来此方式的产品人员。
特点:与其说是验证码,倒不如说是广告位。
纯行为验证码
按照要求将备选碎片直线滑动到正确的位置,或拖动滑块移动来达到验证目的。
代表:极验验证码
特点:操作简单,体验好。单一维度,容易被逆向模拟,与移动端页面切换不兼容。
图标选择与行为辅助
给出一组图片,按要求点击其中一张或者多张。借用万物识别的难度阻挡机器。
代表:Google新型验证码、12306验证码
特点:安全性强。对于图片、图库、技术要求高。
语音验证码
通过输入有效手机号,配合图形验证码,获取语音验证码,有两种方式:一个是在电脑上通过TTS语音播放给用户听到的一种方式。另外一种则是现在比较少有的通过语音电话直接呼到用户手机,实现电话语音播报的方式。
特点:语音验证,简单安全。有时会产生显性的通话成本
点击式的图文验证与行为辅助
通过文字提醒用户点击图中相同字的位置进行验证。
代表:淘宝新型验证码、点触验证码
特点:操作简单,体验良好,单一图片区域较大,破解难度大。
智能验证码
通过行为特征、设备指纹、数据风控等技术,正常用户免验证,异常用户强制验证
特点:简单便捷,区分人与机器、人与人、设备与设备。
OCR技术的发展,简单的图形验证码已经可以被破解。另外随着人工智能的发展,一些更高级的验证码如行为验证码、智能验证码等也面临着被破解的风险。这就像矛盾的两方面,一攻一守,促使技术向更高阶晋级,打造更安全的互联网环境。
扩展阅读:
- 基于SpringCloud的Microservices架构实战案例
- 基于SpringBoot的WEB API项目的安全设计
- 对称加密算法与非对称加密算法的优缺点
- 如何从传统软件开发顺利过渡到互联网技术开发
- 学习新技术时你应当掌握的『最少必要知识』
- 他山之石,可以攻玉:从别人的项目中汲取经验
- 软技能:代码之外的生存指南
- 程序员,保护你的好奇心和求知欲
- 那些会阻碍程序员成长的细节[7]
- 做了七年软件开发后反而更迷茫
- 程序员,保护你的好奇心和求知欲
- 从技术到管理——角色转变