接收短信验证码怎么防止被攻击?

接收短信验证码怎么防止被攻击?

比如用程序生成随机手机号,不断模拟点击接收短信,可以把短信耗干,怎么防止呢?

阅读 6.7k
10 个回答

这个问题我之前也搜过一圈,总结来看,最有效的还是图形验证码。

也可以试试一些集成好的账号系统,比如 http://www.onlyid.net 等,就没有这些烦心事了。

加入时间间隔 不允许一直发送

一分钟倒计时之内不能点击发送短信

目前最有效的方法还是使用图片验证码,只是体验稍差一些,但效果非常好,如果是12306这样的验证码,那么恭喜你,你的短信基本不太会有人去攻击了(^_^)

完全防止是不可能的,只有尽可能减少。

1.验证码 + 时效(机器人
2.IP封锁,同一IP地址一天内最多发送N次(爬虫代理
3.手机号封锁,同一手机号间隔N秒可发送,一天内最多发送N次
4.手机号验证,最基础的一步

可以借鉴各大网站如何实现的。

楼上那哥们说得很对,我通常用第三种

最有效的确实是图片验证码。其他方式,都防不住恶意来浪费你短信的。
大部分倒计时,是针对“友好”用户,防止他手贱不停点,并不是针对恶意用户特意来浪费你短信的。特意浪费短信的,手机号都是假的。

我自己目前的解决方案是:
1、注册。
注册时填写手机号等信息,提交后才发送验证码(手机号写入数据库)并转到B页面。再字段里添加一个短信发送时间和短信发送次数。注册时短信发送次数设置为1。在B页面填写验证码,因为要防止没有收到验证码,所以需要再来个按钮获取验证码。当点击获取验证码后,发送验证码,发送次数为+1。当发送次数为3次之类的,就提示不发送,一个小时之后再来。每次发送验证码时间限制为1分钟。1小时之后再来,发送验证码,发送次数设置为1.以此类推。

2、重置密码。和注册的思路一样,输入手机号,获取验证码,验证码次数为1,再次点击(60秒限制,包括PHP后端语言也有校验),发送验证码,次数设置为2.当次数超过3时,提示1小时之后再来。

这个思路,图片验证码都不需要了。

图片验证码。

一般 接收短信验证码 提供商已经有限制 每天每用户发送次数,或固定模板格式。

一般这个安全机制短信平台都会有限制的,另外运营商也会限制的,比如一分钟3条,一个小时20条等等,http://smsow.zhenzikj.com/doc...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进