
SMS验证码通常用于应用程序场景中,例如网站用户注册,帐户安全性登录,忘记的密码和订单确认. 特别是当涉及到一些敏感的用户行为时,通常由用户使用它来确认操作. 用于二次身份验证的短信验证码.
在实际应用中,许多产品的SMS验证代码界面中存在许多逻辑漏洞. 对于手机短信验证码可能出现的问题,以下总结常见的逻辑漏洞,供您参考:
1,SMS验证码界面未设置发送频率
①不受限制的免费送货;
②有一定的时间间隔,交货不受限制;
SMS验证码界面上没有频率上限,这会导致SMS爆炸. 这种情况通常发生在某些小型站或子站中. 近年来,很少通过GET请求发送SMS验证码. 基本上,他们使用POST请求. 使用数据包捕获软件可以重播请求. 后端没有任何限制. 可以达到短信轰炸的效果.
危险: 危害用户的个人生活,对企业造成一定的负面影响. 许多小型公司都遇到了运营问题,因为SMS验证代码界面被称为很多. 对于没有安全工程师的公司,通常业务端会发现数据异常并向上报告,最后随着开发的发展而回溯以发现此问题,因此在这段时间内丢失给企业的钱也是无法弥补的.

预防: 这主要是为了防御两种攻击情况. 第一个是轰炸单用户SMS,即重播发送请求和电话号码作为值. 第二种是向多个用户发送SMS骚扰的情况,即将phonenum参数设置为字典并重播SMS验证码界面.
①设置发送间隔,即单个用户发送请求后,与下一次请求发送时间相距60秒.
②设置单个用户发送的上限,即设置每个用户每单位时间发送的短信数量的上限. 如果超过该阈值,则今天不允许再次调用SMS界面(该阈值是根据业务条件设置的. )
③设置单个IP传输的上限. 这种情况是为了防止第二种攻击情形. 因为IP的特殊性可能存在,所以IP是一个很大的出口. 一旦证实了意外杀害的后果,该限制将根据自身情况酌情决定. 考虑到对于具有风险控制的团队来说,当发现发送IP异常时,可以在IP中添加辅助身份验证以防止机器运行,还可以减少意外杀人的次数.
2. 验证无效
有一个验证码模块短信验证卡,但是验证模块与业务功能无关. 这是无效的验证,通常在新启动的系统中更为常见.
①获得短信验证码后,随意输入验证码,直接输入两次密码. 用户密码可以成功更改. 无法验证SMS验证码可能会导致诸如CSRF之类的问题.

②任何用户的注册
第一步,使用您的手机号码接收验证码以进行验证,然后下一步跳转到密码设置页面
第二步是拿起包裹,篡改手机号码,并用任何手机号码注册
问题分析: 业务一致性存在安全风险. 身份验证和密码修改过程分开,验证无效.
3. 绕过客户验证

客户端身份验证不安全短信验证卡,可能会导致一系列问题,例如任何帐户注册,登录和重置任何用户密码.
①直接返回明文验证码
②返回密文验证码
③拦截并更换返回包
4. 验证码未绑定到手机号码
通常来说,SMS验证码只能使用一次,验证码和手机号码没有绑定,并且验证码有效期为一段时间,因此可能会发生以下情况:
1. 可以使用A手机,B的验证码;

2. 手机可以在一定的时间间隔内收到两个验证码.
情况1: 重设任何用户密码
a. 使用您的手机号码接收验证码
b. 填写您的验证码和对方的手机号码,然后在下一步中设置新密码
解决方案:
1. 在服务器上执行有效的验证,并且手机号码和验证码是唯一绑定到服务器上的验证.
2. 限制服务器端验证码传输的时间,设置时间限制,并限制次数.
5. 验证码爆破
SMS验证码通常由4或6位数字组成. 如果服务器不限制验证时间和次数,则有可能被炸毁.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-241387-1.html
巴菲特呢
六十多年前我们那么穷