实现滑动验证码简介及原理分析

在今天学习滑动验证码之前,我们有必要先了解下验证码的发展历程及介绍,可以当中知识普及来学习,这对我们理解验证码原理,甚至后面的滑动验证码学习,都有很大的帮助。

滑动验证码

滑动验证码

验证码的发展历程

更多精彩内容请看web前端中文站
www.lisa33xiaoq.net 可按Ctrl + D 进行收藏

从互联网诞生前期,互联网是没有验证码的。在论坛博客上发帖子,只要敲一下回车键按“发表”就可以了。然而,有白客必然有黑客,随着计算机程序的愈发发展,黑客十分猖狂:他们 编写了一种能够大量、重复编写信息的程序,伪装成人类用户,肆无忌惮地朝网络上倾倒大量的、无意义的“僵尸”信息,垃圾邮件、垃圾广告、垃圾评论到处乱飞。更编写了模仿登录、恶意破解密码、刷票等恶意程序。这严重影响了互联网的正常运行,导致体验效果很差。 ? ? ? ? ?以受影响最大的电子邮件的提供商为例:用户每天收到数以千计的垃圾邮件,严重影响工作效率。为了解决这个问题,当时最有实力的邮件提供商 Yahoo(雅虎)公司负责人联系到了当时卡内基梅陇大学一位21岁的学生,他叫路易斯·冯·安(Luis von Ahn)首创验证码,到后来不断发展的新一代验证码,例如:12306的选图验证码,淘宝的滑动验证码,极验验证码,短信验证码,语音验证码等。

早期的图片验证码在随着OCR技术的发展,已越来越不可靠,而这里提出的滑动验证码,由淘宝推出,淘宝滑动框验证深受大家好评。

验证码类别

1.Gif动画验证码

主流验证码通过提供静态的图片,比较容易被OCR软件识别,有的网站提供GIF动态的验证码图片, 使得识别器不容易辨识哪一个图层是真正的验证码图片,可以提供清晰的图片的同时,可以更有效得防止识别器的识别,据统计,动画gif验证码的防垃圾注入可以达到100%,是一个非常有效的验证码创新模式。同时gif动画效果可以有多达百种,也可以增加网站页面的美观效果。

2.手机短信验证码

手机验证码是通过发送验证码到手机,大型网站尤其是购物网站,都提供有手机短信验证码功能,可以比较准确和安全地保证购物的安全性,验证用户的正确性,是最有效的验证码系统。某些验证码接入商提供手机短信验证码服务,各网站通过接口发送请求到接入商的服务器,服务器发送随机数字或字母到手机中,由接入商的服务器统一做验证码的验证。

3.手机语音验证码

您是否遇到过您的网站用户或会员经常因为各种原因收不到网站的验证码,或新用户注册收不到短信没有耐心就直接放弃了您的网站,或因为验证码的问题体验不佳流失掉老客户和潜在新客户呢? 现在,语音验证码的出现把这些问题一下统统解决了,您再也不用为验证码的问题而烦恼了。只要用户的手机或座机能正常接听电话,就一定能收到语音验证码,验证码实现自动语音播报,同时短信也能同时发送到用户手机,实现双保险确保万无一失。语音验证码如果有拨通失败的,系统还能自动重播,确保不漏掉任何一个,从根本上解决您的网站用户收不到验证码的问题。

4.视频验证码

视频验证码是验证码中的新秀,视频验证码中随机数字、字母和中文组合而成的验证码动态嵌入到MP4,flv等格式的视频中,增大了破解难度。验证码视频动态变换,随机响应,可以有效防范字典攻击、穷举攻击等攻击行为。视频中的验证码字母、数字组合,字体的形状、大小,速度的快慢,显示效果和轨迹的动态变换,增加了恶意抓屏破解的难度。其安全度远高于普通的验证码,而且这种验证码形式使用户不会感到枯燥,由于其提高了机器识别的难度从而可以降低用户识别的难度,使得用户更容易辨认。

5.滑动验证码

滑动验证码产生于最近两三年,由于12306的选图验证码实现太过复杂,成本太高,不可大力推广,而且一定程度上加大了买票的力度,饱受非议。因此淘宝推出了滑动验证码以及后来的极验验证码。在极限验证码和滑动验证码,前面有一篇文章介绍相关的Java接口整合教程(可参考,JAVA 整合极验滑动验证码、JAVA 接入极验滑动验证码教程

6.行为式验证码

行为式验证码在国外网站应用得比较多,尤其是google类网站,其分为拖动式和点触式(国内首创是TOUCLICK)两种方式,行为式验证的核心思想是利用用户的“行为特征”来做验证安全判别。整个验证框架采用高效的“行为沙盒”主动框架, 这个框架会引导用户在“行为沙盒”内产生特定的行为数据,利用“多重复合行为判别”算法从特指、视觉、思考等多重行为信息中辨识出生物个体的特征, 从而准确快速的提供验证结果[参考:行为式验证码*百度百科资料]

滑动验证码实现原理

滑动验证码在很多网站逐步流行起来,一方面对用户体验来说,比较新颖,操作简单,另一方面相对图形验证码来说,安全性并没有很大的降低。当然到目前为止,没有绝对的安全验证,只是不断增加攻击者的绕过成本。

总的来说:滑动验证码是根据用户在滑动滑块的响应时间,拖拽速度,时间,位置,轨迹,重试次数等来评估风险。其交互时序图,可以如下概括:

滑动验证码交互流程

滑动验证码交互流程

滑动验证码核心流程分析

1.服务端随机生成抠图和带有抠图阴影的背景图片,服务端保存随机抠图位置坐标;

2.前端实现滑动交互,将抠图拼在抠图阴影之上,获取到用户滑动距离值;

3.前端将用户滑动距离值传入服务端,服务端校验误差是否在容许范围内;

备注说明:单纯校验用户滑动距离是最基本的校验,处于更高安全考虑,可以考虑用户滑动整个轨迹、用户在当前页面上的行为等,可以将其细化复杂地步,可以根据实际情况设计。亦或借助用户行为数据分析模型,最终的目标都是增加非法的模拟和绕过的难度。

滑动验证码分析与论证

A.分析

滑动图形验证码由抠块和带有抠块阴影的原图两部分组成,但是里面包含了两个重要特性保证被暴力破解的难度:

1.抠块的形状随机;

2.抠块所在原图的位置随机;

如此就可以在有限的图集中制造出随机的、无规律可寻的抠图和原图的配对。

B.产生随机形状

1.确定抠图轮廓

大家都知道图片是有像素组成,每个像素点对应一种颜色,颜色可以用RGB形式表示,外加一个透明度,由此可以抽象下模型如下:

把一张图理解成一个平面图形,左上角为原点,向右x轴,向下y轴,每个坐标值对应该位置像素点的颜色,由此就可以把一张图转换成一个二维数组。基于这个考虑,轮廓也用二维数组来表示,轮廓内元素值为1,轮廓外元素值对应0。

2.轮廓形状确定

有坐标系、有矩形、有圆形,由此用数学中解析几何思想,用圆的函数方程和矩形的边线的函数,具体如下:

(x-a)?+(y-b)?=r?中,其中三个参数a、b、r,即圆心坐标为(a,b),半径r。这些将抠图放在上文所述的坐标系上很容易就图算出来具体的值。

web前端中文站点评:

由此看来,验证码/验证方式的发展方向,一定是为了阻止机器性行为,检测哪些是属于真正的用户行为。比如“牛奶和汽油哪个可以喝?”——总之就是一些机器不会、但是人类可以轻易做到的事。这一定是每一类验证码呈现的最好实现效果。

0
如无特殊说明,文章均为原作者原创,转载请注明出处

该文章由 发布

这货来去如风,什么鬼都没留下!!!
发表我的评论

Hi,请填写昵称和邮箱!

取消评论
代码 贴图 加粗 链接 删除线 签到