web安全:打码平台横行,图片验证码已然不安全?一招教你彻底去除图片验证码!

访客3年前黑客文章1135

web端的安全校验一直是大家关注的一个重要问题,最为常见的就是使用图片验证码,图片验证码是验证码的一种,图片验证码常见的形式有输入图片中字母、数字等,目前的发展更为多元。下面小编从几个方面跟大家讲讲图片验证码。

验证码的前世今生

全自动区分计算机和人类的图灵测试(Completely Automated Public Turing test to tell Computers and HumansApart,简称CAPTCHA),俗称验证码,是一种区分用户是计算机或人的全自动化程序。

标准验证码

标准验证码即是我们常见的图形验证码、语音验证码,基于机器难以处理复杂的计算机视觉及语音识别问题,而人类却可以轻松的识别来区分人类及机器。

1612841390_602201ae8b7ff0caaad65.jpg!small

创新验证码

创新验证码是基于之一代验证码的核心思想(通过人类知识可以解答,而计算机难以解答的问题进行人机判断)而产生的创新的交互优化型验证码。第二代验证码基于之一代验证码的核心原理:“人机之间知识的差异”,拓展出大量创新型验证码。

1612841413_602201c541ea94e650a3a.png!small

无知识型验证码

无知识型验证码更大的特点是不再基于知识进行人机判断,而是基于人类固有的生物特征以及操作的环境信息综合决策,来判断是人类还是机器。如Google的ReCaptcha。

1612841423_602201cfceea3d05ed5d5.png!small

图形验证码在发展中的技术对抗

(1)避免触发验证码验证码的引入会带来用户友好度的下降,增加验证码输入以及人眼对验证码识别的可能错误等都会带来不好的使用体验。这对追求用户体验的网站来说,在没遇到可疑行为时,其采取的策略是默认不开启验证码功能,当触发可疑行为识别规则时,才会出现验证码。基于此原理,对攻击方来说,就是尽量避免触发可能出现验证码的规则。一般可疑行为识别是通过检查频繁尝试并且出错这个行为来进行,基于此的对抗措施则是使用不同的IP来进行尝试,或者等待足够的时间再次尝试,这样让目标网站程序认为这些尝试都是正常的访问请求,从而在自动化程序端连续作业时不会出现验证码而达到绕过的目的。

(2)验证码固定从前面的验证码固定问题描述可看出,攻击者可以在同一个会话下,在获得之一个验证码后,后面不再主动触发验证码生成页面,并且一直使用之一个验证码就可循环进行后面的表单操作,从而绕过了验证码的屏障作用。

(3)验证码机器自动识别计算机自动识别验证码,主要原理是通过一定的算法预先建立验证码范围内的字体特征库,再将要识别的验证码通过同样的算法生成特征,与之前保存的特征库进行比较,进而得到图片验证码的值。一般地,其识别过程有如下图所示的处理流程:

1612841460_602201f4cef271f9e259a.jpg!small

(4)深度学习——GANs *** 网站登录图像验证码的发展到现在,遇到的更大的威胁可能就是深度学习了,特别是GANs *** 的出现,让图像验证码遇到了最强劲的对手。

图片验证码剖析

道高一尺魔高一丈

图片验证码在不断发展,目的就是为了避免一些非正常用户操作。而不论图形验证码如何发展,终究是敌不过攻击者的破解手段,正所谓 “道高一尺魔高一丈” 。就比如铁路12306的图片点选验证码,不仅没有挡住黄牛,反而让黄牛抢票更加轻松。

1612841496_602202181ade1e738a519.jpg!small

为什么受伤的总是我

在开发者与攻击者的角逐中,受影响更大的莫过于我们用户了。各种千奇百怪的复杂验证码,不是为了考验黑客,而是考验用户。

验证码的图片常常扭曲得连人眼都认不出来。这在那些无实义的字词中体现得格外明显,就像“rl10Ozirl”。里面用的到底是小写的字母“L”还是数字“1”?是数字“0”还是字母“O”?真正的用户在使用途中真的是饱经磨难。。。“为什么受伤的总是我”。

浪费大家的宝贵时间

据卡内基梅隆大学的研发小组估算,全球人口每天在这些烦人的屏障入口处所耗费的时间,累计可达15 w小时。有种新型的验证码——“多重验证码”(reCaptcha),至少是把这些时间用在了公共价值的创造上。你看到的图片是一个从扫描不良的谷歌(微博)图书中截取出来的模糊单词;而你输入该词拼写的过程,其实就是在协助谷歌处理、识别一段有效文本。

即便如此,我们这些守规矩的用户,每天还是会浪费掉17年的时间。这简直是对生命的可耻浪费。而用户真正想要的是去掉这些额外的操作。

去掉图片验证码我们用什么

风控防火墙

风控防火墙是近几年研发出来的一种专门应用于原图片验证场景的替代品。它将完全取缔原来的图片验证码,将用户体验做到更好。在用户完全无感的情况下来区分正常用户与非正常用户。通过AI立体防御机制,实时防控。用户再也不用担心出现(“验证码输入错误!”)的烦人提示了。

1612841522_6022023206666a646ea83.png!small

如何使用风控防火墙

之一步:获取防火墙帐号密钥

进入?防火墙控制台,在左侧导航栏选择【网站管理】,进入网站管理页面,单击【发到邮箱】接收密钥。
1612841535_6022023fa4c1bc904c922.png!small

第二步:下载防火墙服务器

前往新昕科技官网,在顶部导航栏选择【解决方案】>【下载中心】,进入下载中心页面,找到短信防火墙服务器安装包,点击【下载链接】即可下载。

第三步:业务系统前后端接入

web 前端接入:

Java 在页面合适的位置(标签内)加入以下代码引入 *** 文件:

<script type="text/javascript"src="https://www.freebuf.com/NxtJsServlet"></script>

PHP 在页面合适的位置(标签内)加入以下代码引入 *** 文件:

<script id="finger"type="text/javascript"src="https://www.freebuf.com/nxt_inc/nxt_front.php"></script>

后端接入:

Java

修改配置(和业务系统同系统不需要修改):

newxt.ini (存放位置:"\src\resource")
修改参数(fireWareUrl)–>http://localhost:7502 (本地服务路径)
(isNginx)–>true(有无反向 *** )

短信下发

publicRetMsg  *** sSend(HttpServletRequest request,HttpServletResponse response,String clientMobile){RetMsg retMsg=newRetMsg(-1,"系统异常");FwClient fwClient=newFwClientImpl();try{// 1 调用【短信防火墙】短信发送请求HashMap <String,Object >paramMap=fwClient.getSendReq(request,clientMobile);String jsonReq=fwClient.execReq(paramMap);String  *** sSendRet=fwClient.getRetVaule(jsonReq,"riskResult");if("REJECT".equals( *** sSendRet)){retMsg.setRet(3);retMsg.setMsg("请求过于频繁");}else{// 业务 TODO// 业务调用短信接口 TODO// 调用短信接口 结束if( *** sRetMsg !=null && *** sRetMsg.getRet()==0){// 2 调用【短信防火墙】成功结果fwClient.execSucc(paramMap);logger.debug("send succ");retMsg.setRet(0);retMsg.setMsg("发送验证码成功");}else{// 2 调用【短信防火墙】失败结果SmsVerifyCache.getInstance().remove(clientMobile);fwClient.execFail(paramMap);retMsg.setRet(-1);retMsg.setMsg("发送验证码失败");}}}catch(Exception e){for(StackTraceElement elment:e.getStackTrace()){logger.error(elment.toString());}}returnretMsg;}

短信验证

publicRetMsg  *** sVerify(HttpServletRequest request,HttpServletResponse response,String clientMobile,String  *** sVerifyCode){FwClient fwClient=newFwClientImpl();RetMsg retMsg=newRetMsg(-1,"系统异常");if( *** sVerifyCode==null || *** sVerifyCode.isEmpty()){retMsg.setRet(1);retMsg.setMsg("输入验证码为空");}else{// 1 调用【短信防火墙】验证请求HashMap <String,Object >paramMap=fwClient.getVerifyReq(request,clientMobile);// 请求防火墙String jsonReq=fwClient.execReq(paramMap);// 报文处理String  *** sSendRet=fwClient.getRetVaule(jsonReq,"riskResult");if("REJECT".equals( *** sSendRet)){retMsg.setRet(3);retMsg.setMsg("请求过于频繁");}// 业务 TODOif(cacheSmsVerify !=null &&cacheSmsVerify.getVerifyCode()!=null &&!cacheSmsVerify.getVerifyCode().isEmpty()){if(cacheSmsVerify.getVerifyCode().equals( *** sVerifyCode)){retMsg.setRet(0);retMsg.setMsg("验证成功");}else{retMsg.setRet(1);retMsg.setMsg("验证码错误");}}else{retMsg.setRet(-9);retMsg.setMsg("验证码超时");}if(retMsg.getRet()==0){// 2 调用【短信防火墙】成功结果fwClient.execSucc(paramMap);}else{// 2 调用【短信防火墙】失败结果fwClient.execFail(paramMap);}}returnretMsg;}

PHP

修改配置文件(和业务系统同系统不需要修改):

nxt_ini.php (存放位置:" xt_inc") 修改参数($GLOBALS
[“fireWareUrl”])–>$GLOBALS[“fireWareUrl”]=“http://localhost:7502”

短信下发

require_once$_SERVER['DOCUMENT_ROOT']."/nxt_inc/nxt_client.php";publicfunctionsend(string $mobile){$fwClient=newClientApi();// 获取下发短信报文$paramMap=$fwClient->getSendReq($phone);// 执行下发短信请求 $jsonReq=$fwClient->execReq($paramMap);$fwRet=$fwClient->getRetVaule($jsonReq,"riskResult");if("REJECT"!=$fwRet){// 发送短信业务 TODOif(发送成功标记){//  下发短信成功$fwClient->execSucc($paramMap);}else{//  下发短信失败$fwClient->execFail($paramMap);}}}

短信验证

publicfunction *** sVerify(string $mobile){$fwClient=newClientApi();// 获取短信验证报文$paramMap=$fwClient->getVerifyReq($phone);// 执行短信验证请求 $jsonReq=$fwClient->execReq($paramMap);$fwRet=$fwClient->getRetVaule($jsonReq,"riskResult");if("REJECT"!=$fwRet){// 验证短信业务 TODOif(验证成功标记){//  验证短信成功$fwClient->execSucc($paramMap);}else{//  验证短信失败$fwClient->execFail($paramMap);}}}

第四步:查看风控数据

防御拦截数据尽收眼底,实时查看当日数据详情与近期风险趋势。 通过风控数据看板,可查看1-30天的验证情况、风控拦截情况以及验证事件触发的AI模型情况。

进入防火墙控制台,在左侧导航栏选择【风险大盘】,进入风险大盘页面。

1612841566_6022025e861c357806eaa.png!small

结语

这篇文章到这里就结束了,感谢大佬们驻足观看,大佬们点个关注、点个赞呗~

谢谢大佬~
1612841586_60220272dbc205fc6fe05.jpg!small


作者:香芋味的猫丶

相关文章

Process Hacker:多功能系统监控软件,支持检测恶意软件_法拉第

今天给大家介绍的是一款免费且强大的多功能工具,广大研究人员可以利用该工具来监控自己的系统资源,调试软件或检测恶意软件。Process Hacker项目地址官方网站:https://processhac...

一个人去外地上大学是什么感受 一个人去外地上大学的体验

一个人赶赴异地读大学,除开一开始的随意,伴随着时间的流逝,一直会愈来愈想回家,沒有信任感,填满孤单,一个人在外面地面上高校,我是什么体会感受呢?下边我就而言说。 一个人去异地上大学是什么体会 从此...

电脑反应慢是什么原因,教你几招处理办法!

电脑反应慢是什么原因,教你几招处理办法!

电脑反应慢怎么处理,电脑反应慢的原因有哪些?电脑卡电脑慢相信是很多用户玩电脑时常见的问题之一,然而电脑会出现这样的问题通常有两个原因的,一个是电脑自身问题,一个是电脑网络问题。 如果你的周围其他用户...

文案自黑金句,让人忍不住点赞!

文案自黑金句,让人忍不住点赞!

各人怎么玩自黑、为什么喜欢自黑、以及自黑文案如何写。 当你第一天开始写文案,你的老大就对你说,写文案就是要将产物利益最大化,否则你凭什么吸引别人购置呢? 但我知道你必定有和我当年一样的疑问,我能不能写...

企业注销清算表怎么填(企业注销清算报告范文)

  清算审计报告填好标准:   (一)、结算工作中基本情况:   1、销户公司概况:   企业名字、特性、申请注册時间、注册资金、是不是设立子公司及境外投资、公司股东组成及各公司股东项目投资占比、别的...

上海市有什么休闲会所__各种各样游戏玩法让人沉醉!

上海市有什么休闲会所__各种各样游戏玩法让人沉醉! 上海市有什么休闲会所__各种各样游戏玩法让人沉醉! ??绝世美女好像都犹抱琵琶半遮面,给人一种神密的视觉冲击。而见你一面,沒有琴瑟,却有娇...