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

使用已弃用密钥通过REST API访问Firebase实时数据库的问题

Firebase实时数据库安全机制与Auth参数问题解答

一、自定义UserID替代Firebase ID Token的问题

这是错误的做法。Firebase的安全规则依赖经过Firebase认证系统签发的有效Token来识别用户身份,自定义的UserID无法被Firebase的安全机制验证,自然无法通过auth !== null的规则校验。

二、Auth参数的有效取值说明

  • 你提到的数据库密钥(旧server key)确实已被弃用,虽暂时能生效,但风险极大——任何人拿到该密钥都可完全绕过所有安全规则,直接读写整个数据库,这也是它被弃用的核心原因。
  • 你尝试的access_token、serverAuthCode、authCode都不是Firebase实时数据库认可的Auth参数值:
    • 只有Firebase认证签发的ID Token(即你认为体积较大的那个)才是合法取值,它包含用户身份信息,能被Firebase安全规则解析出auth对象。
    • 若为后端服务调用,可使用Firebase Admin SDK生成的自定义Token,或直接通过Admin SDK操作数据库(无需在URL中添加auth参数)。

三、当前安全规则的问题与优化方向

你当前的规则仅要求用户已认证,未限制用户只能访问自身数据。正确的规则应校验auth.uid与路径中的$uid一致:

{
  "rules": {
    "samarkand": {
      "$uid": {
        ".read": "auth.uid === $uid",
        ".write": "auth.uid === $uid"
      }
    }
  }
}

这样可确保每个用户仅能读写自己$uid路径下的数据,避免已认证用户越权访问他人数据。

四、你忽略的核心要点

  1. Firebase实时数据库的Auth参数仅接受Firebase官方签发的有效Token(ID Token或自定义Token),自定义字符串、其他类型的OAuth Token均不被认可。
  2. 旧数据库密钥会完全绕过安全规则,极度危险,必须立即停止使用,改用合法的认证Token。
  3. 安全规则不仅要验证用户是否已认证,还要验证用户是否拥有对应数据的访问权限(即auth.uid与路径参数匹配)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 05:31:00