使用Firebase认证的App如何校验注册设备以防范同一设备批量注册虚假账号
短信验证并不是唯一的可靠方案,你当前的产品阶段完全可以通过以下几个零成本/低成本方案组合落地,拦截同设备批量虚假邮箱注册:
稳定设备标识绑定注册频次限制
React Native端可通过react-native-device-info库获取设备唯一标识:iOS端取identifierForVendor,安卓端Android 10及以上取SSAID,低版本可按需申请权限取IMEI;也可自行生成随机UUID存储在应用沙盒的Keychain/Keystore中,应用不卸载就不会丢失。
注册请求时将该标识加密传输到Spring Boot后端,后端设置规则:单设备固定周期(比如7天)内最多允许注册2-3个账号,超出阈值直接拦截注册请求即可覆盖普通用户的正常使用需求,同时拦截批量刷号行为。
注意需对设备标识做传输签名,避免恶意分子篡改伪造不同设备标识绕过限制。接入Firebase App Check做前置合法性校验
Firebase官方提供的App Check服务完全免费,支持React Native端集成,可直接验证请求是否来自你的正版应用、是否运行在真实合法设备上,能拦截绝大多数模拟器、脚本、代理发起的恶意注册请求。
注册请求发起前先获取App Check令牌,传给Spring Boot后端校验,校验不通过直接拒绝注册即可。叠加轻量人机验证和IP频次限制
注册流程加入滑动拼图、点选类的轻量人机验证,React Native有大量开源实现可直接用,无需对接付费第三方服务。同时后端可统计同一IP的注册频次,短时间内注册超过阈值的直接加1-2小时的冷却时间,进一步抬高刷号成本。邮箱验证后加账号活跃规则兜底
基于你已有的邮箱验证流程,补充规则:同一设备注册的账号如果完成邮箱验证后7天内无任何活跃行为(登录、使用核心功能等),直接自动回收账号,降低虚假账号的留存率。
以上方案组合使用可拦截95%以上的批量虚假注册行为,几乎没有额外成本,完全适配刚上线的产品阶段。后续如果产品量级提升、恶意攻击规模变大,再叠加短信验证也完全来得及。
内容的提问来源于stack exchange,提问作者Sander Harjak

