时间: 2021-08-03 09:39:11 人气: 17 评论: 0
本文深度剖析了关于短信验证码的运作机制,破解验证码A和短信验证码A‘原理,以及短信验证码未加防护存在的风险和对于短信验证码出现的一些问题应该如何处理。
注:出于安全性考虑,后台数据库只能查看验证码A,无法查看短信验证码A‘。
产品经理只需要理解成为——“我们有一个密件,你用我短信传给你的暗号打开密件,然后把里面的东西交给我,我就把你要的东西给你”。
在这样的一个机制下,而且需要验证码不过于复杂,**出现两种比较常见的对用户账户的安全性造成威胁的情况:
(1)暴力破解短信验证码A’
假设短信验证码A’只有四位,暴力破解只需要模拟调取接口10000次就能够把短信验证码A‘破解出来。假设调取一次接口耗时0.1秒,那么1000秒就能够成功破解验证码A’,即只有短短的1000/60=16.67分钟。
(2)暴力破解验证码A
截取数据库的数据包拿到验证码A,对验证码A执行暴力破解,反推出短信验证码A‘,相比直接暴力破解短信验证码A’,时间**有点长,但可以减少验证次数。
当黑客发现某个未加防护的短信发送接口后,按照某个手机号码列表,循环发送短信验证码,不断变换ip地址,如果我们没有做任何限制的话,**存在两个方面的风险:
为了防止黑客恶意**取目标网站短信验证码,使用对短信发送次数、短信发送时间间隔进行限制以及发送之前增加动态验证。
(1)手机号获取短信验证码次数限制是其中一种防攻击策略,不过在设计这方面内容时,需要根据自己公司的业务情况具体制定的。
需要回答3个问题:
(2)设置短信发送时间间隔是其中的一种防攻击策略,为了防止用户重复获取验证码,一般设置60s左右的间隔获取时间,但验证码的有效期一般是5-30分钟不等。一般来说,5分钟有效的都是4位验证码,30分钟有效的都是6位验证码。不过这方面手段不能防止黑客更换手机号进行攻击,防护等级较低。
(3)发送验证码之前需要填写一次验证码,不过此种传统的方式利用机器学习的知识很容易破解。另外可以增加滑块拼图这种需要人为干预的动态验证。
至于如何研究这一块,各位可以看一下各大手机银行的APP,他们的安全防护措施都非常强大,无论是登录还是注册还是找回密码都有极高的安全性。
本文由 @ 码农 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自 Pixabay,基于 CC0 协议