Web项目新老用户Firebase手机号验证功能如何防范短信滥用?
Firebase 短信验证防滥用解决方案
前端侧防护
- 增加人机验证流程,手机号输入后必须先完成滑块、点选验证码校验,才能触发短信发送请求,拦截大部分自动化脚本请求
- 限制同一客户端的发送频率:本地通过
localStorage记录最近一次发送短信的时间,1分钟内不允许重复触发请求,注意该规则仅为辅助防护,不能完全依赖 - 手机号格式前置校验:先校验输入内容是否符合对应地区的手机号格式规则,不符合直接拦截,不向后端发送请求
后端/服务侧防护
- 加请求频率限制:基于客户端IP、设备指纹做阈值限制,比如同一IP 1小时内最多允许发送5次验证码,超过阈值直接返回错误
- 启用Firebase自带的防护规则:在Firebase控制台开启电话号码验证保护功能,Firebase会自动拦截异常的高频验证请求,还可以设置单手机号每日的验证次数上限
- 增加请求签名校验:前端发送短信请求时,携带按照约定规则生成的签名,后端校验签名合法性,不合法直接拒绝请求,避免接口被直接恶意调用
- 异常手机号拦截:对短时间内多次请求验证失败的手机号,临时拉黑24小时,避免同一手机号被反复刷取请求
业务规则优化
- 触发短信前增加业务场景校验:比如注册场景下,先查询本地数据库,确认该手机号未注册才允许发送验证码,已注册的直接引导走登录流程,避免无效发送
- 新增预验证步骤:如果是未注册用户,可以先要求输入邮箱或者其他基础信息,完成简单的前置校验后,才开放手机号验证入口,提高恶意刷取的成本
- 资费预警:在Firebase控制台设置短信用量阈值,用量超过阈值时自动触发告警,出现异常刷量时可以第一时间人工介入处理
内容的提问来源于stack exchange,提问作者uninformed being
相关产品推荐
相关产品推荐

