在对网站安全进行整体的安全检测的时候,用户登陆以及用户留言,评论,设置支付密码,以及一些网站功能方面都会用到图片验证码,针对于验证码我们SINE安全对其进行了详细的网站安全检测,以及图片验证码安全防护方面,都会详细的跟大家讲解一下。验证码分很多种,图片形式的验证码是目前网站用的最多的,还有一些短信的验证码,手机语言验证码,答题验证码,都是属于网站所用到的验证码,今天主要跟大家讲解的就是图片验证码。
首先要了解一下什么是图片验证码,英文叫"CAPTCHA",其作用就是防止用户对网站进行恶意的登陆以及暴力破解,防止一些恶意的用户对网站进行多次的重复性的攻击,比如:留言,评论,点击,刷票,尝试性的用弱口令去登陆用户的账号,针对这些网站攻击,图片验证码很好的进行了阻止,防止了恶意攻击。
图片验证码生成的流程,我们来看下这个图:
首先用户会去请求这个图片验证码,第一次会在数据库里生成一个相应的session值,然后返回给用户一个图片验证码,客户看到图片里的验证码,会手动录入进去,并点登陆,验证码会第二次的请求到服务器中,服务器后端收到请求后会进行安全对比,与数据库里的session进行比对,如果值是一样的,那么就会判定验证码成功,反之如果不对那么就会把第一次保存的session值进行删除操作,防止机器人对其进行暴力的猜解,因为验证码唯一,只能验证一次,多次验证就会失效。
我们SINE安全在对网站验证码安全检测的同时,会出现很多安全方面的隐患,以及验证码的漏洞,比较常出现的就是网站的验证码重复利用漏洞,该验证码漏洞可以导致攻击者对其复制,重复使用一个验证码,进而对用户的账号密码进行暴力破解。攻击的特征是POST数据里的session值不变,以及验证码也不变,唯一变的就是用户的账号以及密码。
图片验证码的默认配置导致存放位置被泄露,这个验证码漏洞的产生原因主要是把session这个值写到了网站文件目录里,以及一些cookies值都会写到图片文件里。另外一种验证码的漏洞是验证码在对比后,会再进行一次对比,导致不停的进行逻辑运算,多次的请求验证码,会导致整个验证码对比失败。
在对其他网站进行验证码安全检测时,也发现了一种验证码上的安全问题,验证验证码后,并没有将验证码删除,导致可以重复使用,应该对其验证码效验的时候进行返回MD5值,每个请求的返回都不相同,防止用户密码遭到暴力破解。
甚至目前有些网站使用的图片验证码都会遭到软件的自动识别,有些图片识别技术使用的是一些第三方的资源,会对图片里的字母进行识别并自动填入到输入框中,可以对其进行暴力破解。
针对于验证码安全的防护以及漏洞修复方案
对验证码的安全时效时间进行安全限制,一般限制30秒或者50秒之间失效,对于同一IP在同一时间进行多次的验证码请求频率上做安全防护,限制1分钟请求的次数或者是10分钟内的请求次数。对于图片验证码的图片进行噪点渲染,防止图片被团建OCR自动识别。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。