Firebase代码验证 firebase-development-validate

Firebase代码验证技能是一个专门用于审查和审计Firebase项目代码的工具。它根据安全模型和最佳实践,对Firebase的配置、安全规则、架构设计、身份验证实现、测试覆盖率和生产就绪性进行全面检查。该技能旨在帮助开发者识别潜在的安全漏洞、架构不一致性和配置错误,确保Firebase应用在部署前符合高标准的质量和安全要求。关键词:Firebase代码审查,Firebase安全审计,Firebase最佳实践,Firestore规则验证,云函数架构检查,身份验证实现审查,生产部署准备。

云安全 0 次安装 0 次浏览 更新于 2/28/2026

名称: firebase-development-validate 描述: 当需要根据安全模型和最佳实践审查Firebase代码时,应使用此技能。触发词包括“review firebase”、“check firebase”、“validate”、“audit firebase”、“security review”、“look at firebase code”。用于验证配置、规则、架构和安全性。

Firebase代码验证

概述

此子技能根据已验证的模式和安全最佳实践,对现有Firebase代码进行验证。它检查配置、规则、架构一致性、身份验证、测试和生产就绪性。

核心原则:

  • 根据选定的架构模式进行验证
  • 彻底检查安全规则
  • 验证测试覆盖率是否存在
  • 审查生产就绪性

此子技能适用场景

  • 对Firebase项目进行代码审查时
  • 审计安全实现时
  • 准备生产部署时
  • 用户提及:“review firebase”、“validate”、“audit firebase”、“check firebase code”

不适用于:

  • 初始设置 → 使用 firebase-development:project-setup
  • 添加功能 → 使用 firebase-development:add-feature
  • 调试活动错误 → 使用 firebase-development:debug

TodoWrite工作流程

创建包含以下9个步骤的检查清单:

步骤 1: 检查 firebase.json 结构

验证必需部分:

  • hosting - 存在数组或对象
  • functions - 源目录、运行时、预部署钩子
  • firestore - 规则和索引文件
  • emulators - 本地开发配置

检查托管模式是否与实现匹配(site:、target: 或 single)。

参考: docs/examples/multi-hosting-setup.md

步骤 2: 验证模拟器配置

关键设置:

{
  "emulators": {
    "singleProjectMode": true,
    "ui": { "enabled": true }
  }
}

验证所有正在使用的服务都有模拟器条目。

参考: docs/examples/emulator-workflow.md

步骤 3: 审查Firestore规则

检查:

  • 顶部的辅助函数(isAuthenticated()isOwner()
  • 一致的安全模型(仅服务器写入 或 客户端写入验证)
  • 客户端写入使用 diff().affectedKeys().hasOnly([...])
  • 如果使用 collectionGroup() 查询,则检查集合组规则
  • 底部的默认拒绝规则

参考: docs/examples/firestore-rules-patterns.md

步骤 4: 验证函数架构

识别正在使用的模式:

  • Express模式: 检查 middleware/tools/、CORS、健康端点
  • 领域分组模式: 检查导出、领域边界、shared/
  • 独立函数模式: 检查每个文件一个函数的结构

关键: 不要混合模式。验证整个项目的一致性。

参考: docs/examples/express-function-architecture.md

步骤 5: 检查身份验证实现

对于API密钥:

  • 中间件使用项目前缀验证密钥格式
  • 使用 collectionGroup('apiKeys') 查询
  • 检查 active: true 标志
  • userId 附加到请求

对于Firebase身份验证:

  • 函数检查 request.auth.uid
  • 角色查找使用Firestore用户文档
  • 客户端在开发环境中连接到身份验证模拟器

参考: docs/examples/api-key-authentication.md

步骤 6: 验证ABOUTME注释

所有 .ts 文件应以以下内容开头:

// ABOUTME: 此文件功能的简要描述
// ABOUTME: 第二行提供额外上下文
grep -L "ABOUTME:" functions/src/**/*.ts  # 查找缺失项

步骤 7: 审查测试覆盖率

检查:

  • 单元测试: functions/src/__tests__/**/*.test.ts
  • 集成测试: functions/src/__tests__/emulator/**/*.test.ts
  • 存在 vitest.config.tsvitest.emulator.config.ts
  • 满足覆盖率阈值(60%+)
npm test && npm run test:coverage

步骤 8: 验证错误处理

所有处理程序必须:

  • 使用 try-catch 块
  • 返回 { success: boolean, message: string, data?: any }
  • 使用适当的HTTP状态码(400、401、403、500)
  • 使用 console.error 记录错误
  • 在处理前验证输入

步骤 9: 安全与生产审查

安全检查:

  • 代码中无密钥(grep -r "apiKey.*=" functions/src/
  • .env 文件在 .gitignore
  • 规则中无 allow read, write: if true;
  • 敏感字段受到保护,防止客户端写入

生产检查:

  • npm audit 干净
  • 构建成功: npm run build
  • 测试通过: npm test
  • .firebaserc 中项目正确
  • 为复杂查询定义了索引

验证检查清单

托管模式

  • [ ] 模式与 firebase.json 配置匹配
  • [ ] 站点/目标存在于Firebase控制台
  • [ ] 重写引用有效的函数
  • [ ] 模拟器端口已配置

身份验证模式

  • [ ] 身份验证方法与安全模型匹配
  • [ ] 中间件/检查已正确实现
  • [ ] 环境变量已记录
  • [ ] 模拟器连接已配置

安全模型

  • [ ] 仅服务器写入: 所有 allow write: if false;
  • [ ] 客户端写入: diff().affectedKeys() 验证
  • [ ] 存在默认拒绝规则
  • [ ] 一致使用辅助函数

常见问题

问题 修复方法
缺少 singleProjectMode 添加到模拟器配置
无默认拒绝规则 添加 match /{document=**} { allow: if false; }
混合架构 迁移到一致的模式
缺少ABOUTME 为所有 .ts 文件添加2行头部注释
无集成测试 为工作流添加模拟器测试
响应格式不一致 标准化为 {success, message, data?}
无错误处理 为所有处理程序添加 try-catch
代码中包含密钥 移动到环境变量

与Superpowers集成

对于超出Firebase模式的通用代码质量审查,请调用 superpowers:requesting-code-review

输出

验证后,提供:

  • 发现摘要
  • 按严重性分类的问题(关键、重要、锦上添花)
  • 修复建议
  • 最佳实践合规性确认

模式参考

  • 托管: docs/examples/multi-hosting-setup.md
  • 身份验证: docs/examples/api-key-authentication.md
  • 函数: docs/examples/express-function-architecture.md
  • 规则: docs/examples/firestore-rules-patterns.md
  • 模拟器: docs/examples/emulator-workflow.md