前段时间发现接口中的短信验证码,因为一个安全校验问题,导致接口被刷,损失了一点短信费。于是,回过头来,思考了一下短信验证码被刷的问题。

短信验证码如果有漏洞,一天发送几十万条短信,弄不好一个月工资就给刷没了。并且这种刷短信接口,对竞争对手公司造成的损失也是直接的,要是想弄对方一下,这个还是很容易想到的。有点阴谋论的我,有时候不禁怀疑是不是短信服务商干的…毕竟,刷的钱对短信商就是收入,哈。

现在有效的防范方式有如下几种

  1. IP限制,连续请求多少次就禁止请求了
  2. 限制短信发送间隔时长
  3. 限制单个手机号每天的发送次数
  4. 增加图形验证码
  5. 让用户给服务器发验证码

1的方式,属于服务器范畴了,是比较有效的,他不是针对验证码一个接口是,对其他所有接口也是一个安全性保证。

2,3的方式,只能简单的防止发送的频次。并不能根本上解决问题。如果对方刷的代码更好一点,遍历手机号,还是一样的效果。

4的话,市面上有很多这种图形验证码方案。原理方式就是在发送验证的的时候再来一个验证码,验证发送验证码的人是一个人。比较有效,基本上,对于普通的攻击,这种方案就够了。

第5的话,是属于财大气粗,比较厉害的公司了。让用户给服务器发验证码是究极解决方案,还能省了短信费。这种不顾用户体验的方式,不太人性化。