想完全杜绝掉是不可能的,只能提高他们刷的成本,个人建议参考以下几个方向:
设置短信发送间隔时间,一般是60S-120s左右即可。此操作可以杜绝一定频率。
ip+手机号码限定次数,这个根据你们自己规则限定,此操作可以限制最大发送量。
业务流程这块再限定一下,必须是验证用户名+密码登录成功后,才能使用短信功能,意思就是拆分逻辑,先注册好账号密码以后,服务器返回相应标识了,才能用短信验证码功能。
使用图文验证码,这里可以参考GeeTest的那种滑动的,也可以参考12306的那种。增加自动化攻击成本。
使用一次性token验证,类似csrf token机制,后端对短信请求做验证。
以上方法可以最大程度下增加对方攻击成本,已经可以杜绝大部分的短信接口被刷了