You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase实时数据库匿名用户安全规则配置与请求问题排查

问题描述
  • 数据存储在Firebase Realtime Database,数据结构为destinations节点下按用户uid分节点存储对应数据。
  • 初始使用的全局读权限规则可正常请求,但会触发Firebase安全规则告警,初始规则如下:
{
  "rules": {
        ".read": "auth.uid !== null",
        ".write": "false",  
  }
}
  • 业务仅需读取数据,先通过前端SDK获取用户身份令牌:
const accessToken = await user.getIdToken();
  • 初始请求拼接的URL格式如下,可正常返回数据但存在安全风险:

https://discover-planets-to-visit-default-rtdb.europe-west1.firebasedatabase.app/${query}.json?auth=${accessToken}


规则调整后的故障现象

为收紧权限,将安全规则修改为按uid匹配的细粒度读规则,禁止所有写操作:

{
  "rules": {
    "destinations": {
      "$uid": {
        ".read": "auth != null && auth.uid == $uid",
        ".write": "false"
      }
    }
  }
}

同步调整请求URL为以下格式后,请求失败,Postman测试返回HTML页面而非预期JSON:

https://discover-planets-to-visit-default-rtdb.europe-west1.firebasedatabase.app/destinations.json/${uid}?auth=${accessToken}
实际测试使用的完整URL示例:
https://discover-planets-to-visit-default-rtdb.europe-west1.firebasedatabase.app/destinations.json/nQhLc86TWHeHhSP7JSuPAJdBKyk1?auth=${accessToken}


故障原因与修复方案

故障原因

请求URL的路径格式不符合Firebase Realtime Database REST API规范:.json后缀必须放在完整请求路径的最末尾,错误写法将.json放在了/destinations之后,相当于请求不存在的destinations.json节点下的子路径,服务端无法匹配到对应数据接口,因此返回HTML错误页。

修复方法

调整URL路径,将.json后缀移到完整节点路径的最后,正确格式如下:

https://discover-planets-to-visit-default-rtdb.europe-west1.firebasedatabase.app/destinations/${uid}.json?auth=${accessToken}
调整后请求会正确命中/destinations/{uid}节点,完全匹配已配置的安全规则,即可正常返回预期的JSON格式数据。


内容的提问来源于stack exchange,提问作者Sandrew94

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 02:09:25