使用短信验证码验证身份已经是很普遍的了,注册和忘记密码时最为常见。但是在实际应用中,很多产品的短信验证接口存在诸多漏洞,很多人在开发中也是没有注意到这些问题,因此呢给企业和个人造成不必要的损失。接下来我将常见的漏洞总结如下:

一:短信轰炸漏洞

发送短信接口是最容易被盗刷的接口,不法分子利用接口的漏洞,任意的发送短信,给企业造成直接的经济损失。因此这个要特别注意,主要防御手段有四:

(一)同一个手机号限制每日发送短信条数;

(二)限制发送短信间隔,通常限制是 60秒,在客户端设置60秒倒计时没什么用,在服务端也要做;

(三)给接口加签名验证增加破解接口的难度。

(四)限制ip日发送短信条数

二:验证码未与手机号绑定

验证码未与手机号绑定的话,就会发生这样的情况,A的验证码B可以用,这样是非常不安全的

(一)任意用户注册漏洞

可以使用任意手机号进行注册,操作步骤如下:1.在注册界面,输入自己的手机号;2.发送验证码,拿到验证码,然后退出登录界面;3.重新进入注册界面,输入任意人的手机号,输入刚才拿到的自己的验证码,注册成功。

(二)任意用户密码重置漏洞

可以任意修改任何账号的密码,操作步骤如下:1.在忘记密码界面,输入自己的手机号;2.发送验证码,拿到验证码,然后退出忘记密码界面;3.输入其他人的手机号,输入自己的验证码,验证成功,修改别人的密码成功。

解决之道,唯有在服务端校将验证码与手机号绑定。

三:验证码暴力破解漏洞

验证码一般由4位或6位数字组成,4位的话,最多尝试1万次就能破解验证码,所以应对验证次数进行限制,同时应该设置验证码的过期时间(5分钟或15分钟失效),防止暴力破解验证码。

四:客户端验证绕过

在客户端校验验证码是不安全的,必须在服务端进行验证,否则容易造成任意用户注册、任意修改密码、任意登陆等一系列问题。