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

使用第三方认证的Firebase实时数据库可否设置全局读写权限?

关于Firebase实时数据库全局开放读写权限的风险说明

首先明确结论:绝对不要在生产环境使用你贴的这套全局允许读写的规则,哪怕你用了第三方身份认证,也会带来非常严重的安全漏洞。

  • 首先这套规则等于把你的数据库完全暴露在公网,任何拿到你数据库URL的人都可以无需任何验证,直接读取、修改、删除所有数据:
    • 恶意用户可以直接篡改所有玩家的游戏数据,比如修改自己的段位、道具数量、对局分数,完全破坏游戏公平性
    • 甚至可以直接清空整个数据库的所有内容,导致你的服务直接瘫痪
    • 还可以批量爬取你库里存储的所有玩家信息,造成用户隐私泄露
  • 你提到的「需要实时同步玩家操作所以要开放权限」是错误认知:实时同步和安全规则完全不冲突,哪怕你用的是第三方身份认证,也完全可以通过Firebase的自定义令牌机制,把你的第三方认证和Firebase的权限体系打通,不需要全局开权限。
    • 你可以在自己的服务端用第三方认证完成用户身份校验之后,为用户签发Firebase认可的自定义JWT令牌,客户端拿到这个令牌之后就可以正常和Firebase实时数据库交互
    • 之后你就可以在安全规则里通过auth变量拿到用户的身份信息,做细粒度的权限控制,比如只允许用户修改自己所属对局的操作数据,不允许越权操作其他人的内容

你可以参考下面的最小粒度规则思路调整,既不影响实时同步能力,还能规避恶意操作风险:

{
  "rules": {
    "games": {
      "$gameId": {
        // 只允许加入该对局的玩家读取本局数据
        ".read": "auth != null && data.child('players').hasChild(auth.uid)",
        // 只允许玩家修改自己的操作字段,不允许修改对局核心数据
        "players": {
          "$playerId": {
            "actions": {
              ".write": "auth != null && $playerId === auth.uid"
            }
          }
        }
      }
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:57:04