Firebase Realtime Database收到Test Mode 5天过期警告该如何处理?
这个安全警告的实际含义
- 当初你创建Realtime Database时选择Test Mode启动,Firebase自动配置的规则带固定时间锁:允许任意来源的请求无限制读写30天,到期后自动切换为完全拒绝所有客户端请求的锁死状态,没有平滑过渡的中间模式。
- 目前距离这个锁死时间还有5天,到期后不管你的项目代码逻辑是否正确,所有从前端发往数据库的请求都会被直接拦截,项目会直接连不上数据库。
- 你点开编辑规则看到的带注释的旧代码,标注的就是这个默认30天的到期时间,不需要逐行拆解调整,可以直接整体替换。
匹配你当前学习阶段的可落地方案
你现在是跟着课程做项目,还没学到授权模块、只有自己一个用户访问,不需要立刻上复杂的权限体系,直接用下面的临时方案解决到期锁死的问题,完全不打乱学习进度:
- 打开你收到邮件里的「编辑规则」入口,把页面里默认的旧Test Mode代码全部删掉
- 把下面这段规则复制进去,注意替换里面的毫秒时间戳:
{ "rules": { // 把下面两个时间戳替换成你需要的过期时间(从当前时间往后推算即可,比如课程还有2个月就选往后60天的时间) ".read": "now < [你算出的毫秒级Unix时间戳]", ".write": "now < [你算出的毫秒级Unix时间戳]" } }
- 点发布保存规则就完成了
这个方案的效果:
- 在你设置的过期时间之前,数据库的读写体验和之前的Test Mode完全一致,不会卡你跟着课程写代码的进度
- 到达你设置的过期时间后,规则会自动切回完全锁死的状态,不会无期限把数据库暴露在公网下留安全隐患
- 完全不需要提前学习Firebase授权相关的内容,和你当前的学习进度完全匹配
几个容易踩的坑
- 不要照搬网上Firestore的规则教程:你用的是Realtime Database,两者的规则语法、代码结构完全不兼容,复制粘贴过去会直接报错无法保存
- 不要为了图省事把规则写成永久开放(也就是
.read: true、.write: true不带时间限制):这种无限制开放的配置会被全网的数据库扫描工具盯上,大概率会被恶意删掉数据、塞入垃圾广告 - 改完规则立刻就能生效,不需要等24小时的安全扫描周期,你可以直接在规则页面用自带的请求模拟功能,测试读写请求是否能正常通过
- 等后续课程讲到授权模块时,再把规则升级为细粒度权限配置,不要直接用那种“所有登录用户可读写整个数据库”的粗粒度规则,这类规则权限过大,不符合Firebase的安全规范
内容的提问来源于stack exchange,提问作者user258081
相关产品推荐
相关产品推荐

