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

访客3年前黑客文章1131

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


作者:香芋味的猫丶

相关文章

查看微信备份聊天记录的软件(2019微信聊天记录备份攻略)

你知道iCloud会偷偷上传微信聊天记录吗?前不久小编一个朋友发现手机系统提示iCloud存储空间已满,但是平时他并没有上传多少照片在云端。在iCloud官网能够看到的只有备忘录,通讯录,提醒事项等...

男主是开始是黑客的玄幻小说(有没有男主是黑客的小说)

男主是开始是黑客的玄幻小说(有没有男主是黑客的小说)

本文目录一览: 1、求一本主角是黑客的小说 想不起来叫什么了 2、与黑客有关的小说有哪些?(最好是言情的)觉得最好看的要标出来哦、 说说,谢谢 3、求一部男主角是个黑客的小说。 4、求主角...

吃胶原蛋白有助于美容吗?今天蚂蚁庄园5月14日庄园小课堂答案

吃胶原蛋白有助于美容吗?今天蚂蚁庄园5月14日庄园小课堂答案

今天支付宝蚂蚁庄园2020年5月14日庄园小课堂的答案是什么呢?蚂蚁庄园庄园小课堂2020年5月14日的问题是【下列选项中,哪种植物也是“吃肉”的】和【小鸡宝宝考考你,吃胶原蛋白有助于美容吗】。下面小...

跟这台计算机连接的一个usb设备运行不正常 无法识别怎么解决

有不少用户在使用电脑的时候,反映说连接手机之后,会在任务栏右下角提示“无法识别的USB设备。跟这台计算机连接的前一个USB设备工作不正常”,导致手机无法连接电脑进行操作,这该怎么办呢,不用担心,本文给...

黑客帝国4反派怎么理解(黑客帝国4neo)

黑客帝国4反派怎么理解(黑客帝国4neo)

在电影《黑客帝国4》中,尼奥在虚拟世界的职业是? 在《黑客帝国4》的剧情设置中,尼奥虚拟世界职业是开发游戏的程序员,现实是一家大公司的顶级游戏设计师,开发的游戏《黑客帝国》风靡全球。在电影《黑客帝国4...

13城40天密集出台公积金新政:有你家乡吗?

中新经纬客户端10月23日电(吴晓薇)下半年以来,继广州、长沙、厦门等地调整公积金相关规定后,近期又有多个城市密集出台公积金新政。 据中新经纬客户端不完全统计,6-8月,共有10余地针对公积金提取业...