相信很多朋友都有试过被人恶意刷验证码的经历,当然我也不例外,之前被人恶意搞过一次

如果短信服务针对的用户不只是国内用户还涉及国外用户的话,更加要做好安全机制,不然损失会很严重(因为国外的短信费用更加昂贵),所以才会有感写出一些相应的解决方法!

(1)要根据自身业务逻辑去限制同个号码每天最多的短信请求次数(简洁点来说就是限定的次数足够你去进行操作,如果超出了很多次,那很明显就是恶意搞事啦);

(2)针对不同的IP限定发送次数(不过搞事的人可能会不断去切换IP地址,所以最好还是根据对应的情况加个IP地址的黑名单);

(3)发送验证码需要有时间间隔,时间控制在60秒左右,而且这个时间间隔的判断最好不要单单在前台判断,最后后台也存一个session的记录,因为别人如果是通过代码去刷的话,会直接跳过前台的页面操作;

(4)一般刷验证码都是通过代码去搞的,所以最好在获取验证码的上一个流程里,传递一个随机数过来(注意不要用url去传递和不要在html里出现,免得被对方知道你的方式,从而找到方法去获取),这样有效控制恶意刷验证码的情况;

(5)使用画布验证码,这个也是最简单和最有效的防护方法,超级地有效拦截了非人为的操作;

(6)可以改用用户发短信到指定的手机号码验证,这样被刷的风险就不了(不过这种方法会增加用户的操作难度,用户体验不太好,所以个人不建议使用这个方法去防范);

当然这些方法可能不会完全拦截所有恶意刷验证码的攻击,但是我们使用以上方法至少能给搞事的人增添一些难度,减少验证码恶意被刷的情况!