Firebase Custom Claims是否安全?可存储敏感第三方用户ID吗?
关于Firebase Custom Claim存储敏感第三方ID的安全性解答
核心安全结论
- Firebase Custom Claim的服务端存储本身符合安全标准,但存在客户端侧的泄露风险
Custom Claim存储在Firebase Auth的用户核心记录中,只有Firebase Admin SDK有权限执行写入操作,服务端层面不会出现未授权的外部访问泄露。
但所有Custom Claim都会被完整包含在用户的ID Token中,用户本人可以通过解析自己的ID Token拿到所有Claim的明文内容。如果你要存储的第三方用户ID属于不允许用户本人知晓的敏感信息,这种存储方式完全不可行,存在明确的泄露风险。
对应你的业务场景的可行性分析
你的核心诉求是降低每日全量拉取用户第三方ID的成本,用Custom Claim确实可以规避Firestore的文档查询费用,但需要注意两个限制:
- Firebase Admin SDK的
listUsers接口单次最多返回1000条用户记录,用户规模较大时需要分页遍历,遍历过程本身不需要支付额外费用,比Firestore按文档计数的查询成本低很多 - 需要做好数据一致性维护:当用户的第三方ID发生变更时,必须同步更新Custom Claim,避免后续批量处理时拿到过期数据
更安全的低成本替代方案
如果第三方ID属于用户不可见的敏感信息,可以用以下方案替代,同样能控制查询成本:
- 将所有用户的第三方ID存储在Firebase Realtime Database的单独节点下,以用户UID为键名,全量遍历该节点仅收取RTDB的出口带宽费用,远低于Firestore的文档查询费用,且数据不会被前端获取,安全性更高
内容的提问来源于stack exchange,提问作者Joseph Alvini
相关产品推荐
相关产品推荐

