事件
接口来源
1.WEB注册接口
2.APP注册接口
发送大量验证码
IP数量不断变化,大量手机号码(不在意短信是否空号)
目前解决方案
• 增加了安全验证码
• 输入验证码在发送短信
安全方案
0.短信发送时间间隔限制:
限制同一个手机号码重复发送的时间间隔。通常设置为60-120秒,前端做倒计时限制,时间未到不能点击发送短信按钮,后台也做时间间隔限制,时间未到不能发送短信。
1.IP限定
根据自己的业务特点,设置每个IP,号码,每天的最大发送量,另外可校验手机号码和IP是否属于同一地区
2.修改注册步骤
注册用户,将发送短信验证码和设置用户名密码分成两个步骤,第一步一个页面用来设置用户名和密码,用户设置用户名和密码发送到后台,获取到后台返回的第一步成功回执之后,进入第二步另一个页面发送手机短信验证码。(提交的速度和IP提交限制)
附:将手机短信验证和用户名密码设置分成两个步骤,用户在设置成功用户名密码后,下一步才进行手机短信验证,并且需要在获取第一步成功的回执之后才可进行校验。
3.加入Token
对发送者进行唯一性识别:防止修改参数伪造多个IP地址和手机号码进行恶意攻击,用Token作为唯一性识别标识,后台将Token注入到前端,前端可以获取到Token,请求发送短信验证码接口时带上Token,后台接收到Token进行验证,验证未通过不能发送短信。(推荐使用第这种方案)
另外把图片和手机号码进行绑定,
4.增加图片验证码:
发送短信验证码时,要求输入图片验证码,每个图片验证码仅能使用1次,使用1次后,不管输入的图片验证码是否正确自动失效。
如果输入错误更新图片验证码。图片验证码失效可以防止图片验证码识别软件尝试多次识别。
可以考虑复杂的图片验证码或点触验证、滑动验证、图像正反。
5.埋点
通过js收集一些网页版的设备指纹和客户端信息上报,通过js生成hash指纹区别不通设备,同时上传浏览器ua、分辨率、平台、系统等信息,有宽泛的鉴别能力,通过此方法可以建立自己的情报库。
对用户进行人机验证,例如,前段js的加载,用户页面停留的时间,判断用户是否代理IP。
有能力企业可以自己做风控系统