Firebase:区分身份、权限、存储与通知

内容摘要

Firebase包含SDK、访问控制和定价条件不同的服务。识别用户不代表允许其访问全部数据。应逐项评估安全与成本。

虚构的无人身份核验室:两把安全密钥、空白卡片和酒红色文件夹
本文目录

Firebase包含SDK、访问控制和定价条件不同的服务。识别用户不代表允许其访问全部数据。应逐项评估安全与成本。

认证与授权

Firebase Authentication管理登录,权限仍需单独定义。Cloud Firestore的网页及移动客户端使用Security Rules;服务器客户端库绕过这些规则并使用IAM,因此不能认为同一控制覆盖两条路径。文档中的网页MFA要求Firebase Authentication with Identity Platform。

数据与文件

Cloud Firestore和Realtime Database是不同数据库服务;Cloud Storage保存文件等对象。它们不共用一条安全规则。当前FAQ要求Cloud Storage for Firebase使用Blaze,包括既有存储桶,但仍可能有免费用量。声称架构免费之前,应核对配额与计费。

FCM通知

FCM HTTP v1使用服务器授权,包括短期OAuth 2.0访问令牌。应从可信环境发送,不能把管理凭据嵌入客户端。设备注册令牌用于定位接收目标,不是用户ID令牌或业务权限。

会话与运行

区分ID令牌、刷新令牌及撤销。密码学有效性并不能证明账户持续获权。应确定必要日志、保存期限、成本告警与资源级控制。Firebase不会自动使处理符合GDPR。

来源

编辑核验日期:2026年11月1日。

将身份决策传递到解析器。

成功登录并不意味着授权图中的每个字段。到达每个解析器的身份上下文必须支持对请求对象和敏感数据的检查。

  • 在多个角色和所有者下测试同一字段。
  • 在计算嵌套字段之前拒绝对象访问。
  • 角色更改或会话撤销后重放。

一手资料:OWASP — GraphQL Cheat Sheet. 相关方法:阅读实用指南.

API分页与一致导出

数据变化可能造成导出缺失或重复。

  • 记录筛选条件、排序和同值时的稳定次序键。确认API提供快照还是读取动态集合。测试读取期间的新增和删除;存在游标不等于数据已冻结。
  • AIP-158以空next_page_token表示结束,而非结果页较短或为空。虚构页面[A,B]和[B,C]共有四行,但只有三个唯一标识。还要检测相同游标却无进展的情况,并遵守实际API约定。
  • 先持久保存批次,再确认继续状态。使用稳定标识重放中断批次,每次请求都核查权限;游标不是访问许可。快照过期时重新开始或按明确策略核对,不要悄悄拼接不同状态。

可复现的验收案例

虚构示例:数据不代表客户或实际观察结果。

查看案例输入
{
    "page_1_ids": [
        "A",
        "B"
    ],
    "page_2_ids": [
        "B",
        "C"
    ],
    "next_cursor": "c2",
    "empty_page_has_next_cursor": true
}

预期判断

B重复出现。核对标识符;空页后若仍有下一游标,也应继续。

验证步骤

  1. 定义筛选、稳定顺序及对象身份。
  2. 测试重复项及含下一游标的空页。
  3. 保留标识及真正终止条件。 核对接收对象与唯一标识符,标记重复游标;存在后续页的空页面不应被视为采集结束。

Google AIP-158 — Pagination

达到预期行数就证明导出完整吗?

不能。缺失标识和重复标识可能在数量上相互抵消。比较标识、范围和截止时间,并记录未解决差异。

一手资料:Google AIP-158 — Pagination. 相关方法:阅读实用指南.

通行密钥:准备域名和RP ID变更

区分业务账户、网页来源和RP ID,避免悄悄重新绑定凭据。

  • 记录旧、新来源、RP ID及关联账户。相同账户名不意味着通行密钥对另一个RP ID有效。核查WebAuthn允许的组合和迁移期间可用的登录路径。
  • 在授权测试环境用合适的库核查挑战、来源、RP ID和账户绑定。测试非预期来源和重复挑战。RP ID变化时准备经过身份验证的新注册;复制数据库行不是密钥迁移。
  • 测试仅持有旧凭据的用户、恢复流程和已打开会话。结合已验证回退方式确定路径启用、停用顺序。新域名注册成功不能证明所有旧会话已撤销。

可复现的验收案例

虚构示例:数据不代表客户或实际观察结果。

查看案例输入
{
    "old_origin": "https://login.old.example",
    "old_rp_id": "old.example",
    "new_origin": "https://login.new.example",
    "new_rp_id": "new.example",
    "same_service_account": true,
    "expected": "authenticated_new_registration"
}

预期判断

虚构例:账户相同,但old.example变为具有不同RP ID的new.example。不能悄悄重绑旧凭据;新注册必须经过计划的身份验证路径。

W3C — Web Authentication Level 2

一手资料:W3C — Web Authentication Level 2. 相关方法:阅读实用指南.

身份:认证要素、会话与恢复

Firebase:短期令牌不会终止整个会话

文档规定ID令牌有效期为一小时;刷新令牌可获取新令牌。撤销刷新令牌与检测ID令牌撤销是不同控制。

  • 将撤销关联到相应账户。
  • 使用SDK文档规定的撤销检查,例如checkRevoked。
  • 在每个受保护后端测试旧令牌并检查权限。

深入了解身份控制 →

来源核验日期 · NIST · Authenticator Event Management NIST · Session Management Firebase · Manage User Sessions