谈谈我是如何正确使用验证码
原文:http://www.hackdig.com/06/hack-36482.htm
验证码(CAPTCHA)
是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。可以防止:恶意破解 密码、刷票、论坛灌水。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。
验证码的作用: 有效防止攻击者对某一场景使用暴力方式进行不断的攻击尝试。验证码主要是运用于登录,注册,评论发帖及业务安全防刷等场景。
(1)登录场景:防恶意程序采用暴力破解的方式进行不断的登录尝试,来破解用户的密码(撞库)。
(2)注册场景:防止恶意程序进行大批量的注册,注册大量恶意账号。
(3)密码找回场景:防止批量重置用户账号,威胁其他用户账号安全。
(4)评论发帖场景:防止垃圾帖,广告贴刷屏,使论坛,博客等网站没有办法运行。
(5)其他重要业务场景:投票活动,抢购商品,刷优惠券,抢票,价格爬虫,恶意订单等等业务场景防暴力。
验证码分类:
读取式验证码:直接读取图片/视频中的字符,让用户识别/计算出相应的验证码值。例如:字符/图形类验证码、问题类验证码、视频验证码等。
字符/图片类验证码:通过在图片上随机产生数字或者是英文字母或者是汉字,一般有四位或者六位验证码字符。通过添加干扰线,添加噪点以及增加字符的粘连程度和旋转角度来增加机器识别的难度。但是这种传统的验证码随着OCR技术的发展,能够轻易的被破解。
问题类验证码:问题验证码主要是以问答式的形式来进行填写。
系统可以生成诸如“1+2=?”、“山东的省会是?”之类的问题让用户进行回答,当然这样的问题是随机生成的。
视频验证码:验证码中的新秀,视频验证码中随机数字、字母和中文组合而成的验证码动态嵌入到MP4,flv等格式的视频中,增大了破解难度。其安全度远高于普通的验证码,而且这种验证码形式使用户不会感到枯燥,由于其提高了机器识别的难度从而可以降低用户识别的难度,加上其中验证码是动态的,使得用户更容易辨认。
行为式验证码:通过用户的某种操作行为来完成验证。例如:拖动式验证码、点触式验证码
拖动式验证码:拖动式验证码,类似于手机的滑动解锁,根据提示用鼠标将滑块拖动到指定的位置完成验证。
点触式验证码:点触式验证码,同样根据文字提示,点击图片中与文字描述相符的内容完成验证。
手机相关验证码:手机短信验证码、手机语音验证码
短信验证码:手机短信验证码是通过发送验证码到手机,可以比较准确和安全地保证系统的安全性,验证用户的正确性,是比较有效的验证码系统。
语音验证码:语音验证码是通过语音电话直接呼叫用户手机或固定电话播报验证码,解决短信验证码到达率及政策性问题。常用于网站、移动客户端、银行金融等用户身份验证,以及支付确认等安全性要求更高的即时服务。
验证码踩坑场景汇总
客户端生成验证码:验证码由客户端脚本生成及校验,客户端校验很容易被绕过。
验证码返回客户端:验证码的值返回在html中或输出在cookie中,可直接提取、使用该验证码值。
验证码可复用:验证码可重复使用或长时间不过期,可使用一个验证码重复进行某项操作。
验证逻辑缺陷:验证码为空或任意输入验证码,服务器端均校验成功。登陆场景中,先校验了用户名、密码后校验验证码。
验证码易被识别:验证码设置简易,未使用干扰线、字符扭曲等防识别技术,很容易被验证码识别软件识别出来
短信验证码应用注意事项
短信场景区分:短信应该按业务场景、金额等因素分开,比如找回密码短信与绑定帐号短信不能混用,转帐给张三和李四的短信不能混用,转帐给张三100块和200块两条短信不能混用
短信模板:发送的短信应该告知用户正在执行何种操作,并且强调客服不会向您索取短信,请勿将短信告知他人;
有效短信:如果同种业务场景发送了多条短信,只允许最后一条短信有效
短信有效期:每条短信有效期应不高于30分钟;
短信验证:每条短信只允许成功使用一次,只要成功验证,此条短信即失效,每条短信验证码最多允许输入错误5次;
短信频次控制:每个业务场景短信发送频率应该控制在不小于60s一次,每天最多允许向一个手机号码发送10条手机短信;
短信验证码长度:应不低于6位数字
看完打开支付宝扫一扫领个红包吧!