如何防止恶意刷短信验证码呢?暂时想到两个解决办法,一个是基于手机号,另一个是基于ip:
1、同一个手机号码,1分钟内只能接受一次短信。但不知道对方会不会随机生成手机号码。
2、同一个ip,假如1分钟内请求发送验证码10次,就拉黑。但不知这样会不会对局域网内的用户产生影响,另外听说可以通过代理修改ip......
有没有做过类似功能的兄台,解答一下,谢谢了!!!
没这么坏吧,你那个短信验证要登录吗?如果要登录就好办,1分钟发送10次,就注销,再让它登录,搞一个验证码,搞定。
不是登录,是注册的时候发送验证码。悲剧就悲剧在这。。。
@iBoyer: 那就超过几次要输验证码。
你可以做一个限制,定期一个手机号同一个ip可以发送几次,超过次数就不发
发送短信,一般是验证码+手机号验证的方式来实现,不建议使用IP验证(假如是一个局域网的就不好了),
验证码是为了防止用恶意程序,手机号检测,就是在你发送验证码的后端判断这个手机号是否发送过验证码以及发送验证码的时间间隔。 至于说对方随机生成手机号码,这个也就随他去了(有验证码我相信对方不会这么无聊,各大网站也都是这么个方式来做的)。
你不能预设所有人都是友好的。
完全有可能存在恶意的行为,当然,任何措施,都不能100%防止恶意的行为,只能说提高恶意行为的门槛,提高难度,阻止或者减少恶意行为。
1,前端加图形效验码(防恶意防机器人)
2,同ip内连续手机号频率限制(建议为60秒)
3,在注册页添加个隐藏的<input>,value为随机验证码(保存在session),发短信前验证一下,保证是在当前页面点击。
4,加上检测逻辑,屏蔽非手机号的乱码等无效数字。
以上四步即可解决楼主问题!更多安全策略可参考:shxinxinyun.com
我们就是做短信验证码的,可以控制时间发短信验证码,如1分钟内只能发送一次,发送三次仍没通过则需要语言验证
可以看下下面这篇博客,感觉挺有用的: 短信验证码被刷怎么办?java 短信验证码防刷策略:https://blog.csdn.net/weixin_49701447/article/details/113624970