大家好,又见面了,我是你们的朋友全栈君。
验证码的发展历程
从互联网诞生前期,互联网是没有验证码的。在论坛博客上发帖子,只要敲一下回车键按“发表” 就可以了。然而,有白客就有黑客,随着计算机程序的愈发发展,黑客十分猖狂。他们编写了一种能够大量、重复编写信息的程序,伪装成人类用户,肆无忌惮的在网络上倾倒大量的、无意义的“僵尸”信息,垃圾邮件、垃圾广告、垃圾评论到处飞。更编写了模仿登录、恶意激活成功教程代码、刷票等恶意程序。这严重影响了互联网的正常运行,导致体验效果很差。 以受影响最大的电子邮件的提供商为例:用户每天收到数以千计的垃圾邮件,严重影响工作效率。为了解决这个问题,当时最有实力的邮件提供商 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)两种方式,行为式验证的核心思想是利用用户的“行为特征”来做验证安全判别。整个验证框架采用高效的“行为沙盒”主动框架, 这个框架会引导用户在“行为沙盒”内产生特定的行为数据,利用“多重复合行为判别”算法从特指、视觉、思考等多重行为信息中辨识出生物个体的特征, 从而准确快速的提供验证结果。
滑动验证码实现原理 滑动验证码在很多网站逐步流行起来,一方面对用户体验来说,比较新颖,操作简单,另一方面相对图形验证码来说,安全性并没有很大的降低。当然到目前为止,没有绝对的安全验证,只是不断增加攻击者的绕过成本。
总的来说:滑动验证码是根据用户在滑动滑块的响应时间,拖拽速度,时间,位置,轨迹,重试次数等来评估风险。
验证码的原理
首先了解到的是验证码是由服务端产生,以图片的形式展示在客户端或页面,用户端的用户根据图片识别验证码,并进行注册提交,提交的验证码在服务层进行校验,如果校验成功,则用户注册成功并登陆,如果失败,请用户重新注册。然后想一想这些图片是怎样生成的,验证码如何设计的,验证码为什么要设计成图片的格式,而且人们肉眼都难以识别其中的验证码。
图片是在服务端随机产生,这些图片可以通过设置规定他们的高度和宽度,然后再图片上绘制一些干扰线,当然,干扰线的数量也是可以控制的,不同验证码插件或者不同的网站验证码图片的干扰程度不同,一般来说干扰程度越高,防止恶意攻击的效果会更好一些。但是用户识别起来也会增加难度,制造干扰线也是防止别人编写程序识别图片中的验证码或者通过某种机器提取图片中的验证码,来进行恶意注册或搞破坏。如果人眼都不能一眼轻易识别图片中的验证码,相信机器的识别度在比人眼低的情况下,不容易获取图片中的验证码。图片上的验证码可以是数组和大小写字母的组合,也可以是汉字的形式,这些字符都是随机产生并进行拼接的。实现验证功能的图片合成之后,会转换为一串字符串,然后以字节数组输出流的形式传送到前端,并显示在页面的相应位置。不是,该验证码产生的同时,会伴随产生它的唯一标志的id,过期时间,然后这些数据一般会一同封装到服务端的缓存中,到用户输入验证码并返回时,在服务端进行校验,并把校验的结果返回到前端界面。这些是验证码的大致原理。
原文链接:https://blog.csdn.net/IBLiplus/article/details/81987341
原文链接:https://juejin.cn/post/6893321446698221575
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/159129.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...