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

无需Auth变量,如何提升无账号登录的Cloud Firestore数据库安全性?

解决Cloud Firestore公开规则安全隐患的方案

核心问题

当前你设置的Firestore规则允许所有用户在2023年12月30日前完全读写整个数据库,属于极高风险配置——任何人都能批量篡改、删除数据,或上传垃圾内容占用资源,谷歌的安全提醒完全合理。你的场景是匿名用户读数据+提交bug反馈,无需全局开放权限,应按数据分区设置精细化规则。

针对性优化方案(无需用户登录)

1. Firestore规则调整

只开放必要集合的权限,严格限制读写范围和内容:

service cloud.firestore {
  match /databases/{database}/documents {
    // 公开数据集合:允许所有用户读取,禁止写入
    match /public_content/{document} {
      allow read: if true;
      allow write: if false;
    }

    // Bug反馈集合:仅允许用户创建反馈文档,禁止修改/删除已有内容
    match /bug_reports/{reportId} {
      allow create: if request.resource.data.size() <= 10240 // 限制单文档不超过10KB
                  && request.resource.data.keys().hasAll(['description', 'imageUrl']) // 强制必填字段
                  && request.resource.data.description is string
                  && request.resource.data.imageUrl is string;
      allow read, update, delete: if false; // 如需后台查看可单独添加管理员权限规则
    }

    // 其他所有集合默认禁止访问
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

2. Cloud Storage规则同步优化

针对bug图片提交路径,限制上传格式和大小:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    // Bug图片存储路径:仅允许上传图片,禁止其他操作
    match /bug_images/{imageId} {
      allow create: if request.resource.contentType.matches('image/.*') // 仅允许图片格式
                  && request.resource.size <= 5242880; // 限制图片大小不超过5MB
      allow read, update, delete: if false;
    }

    // 其他路径默认禁止访问
    match /{allPaths=**} {
      allow read, write: if false;
    }
  }
}

3. Realtime数据库规则适配

如果Realtime数据库也需公开访问,同样按节点精细化配置:

{
  "rules": {
    "public_data": {
      ".read": true,
      ".write": false
    },
    "bug_reports": {
      ".write": "newData.hasChildren(['description', 'imageUrl']) && newData.child('description').isString() && newData.child('imageUrl').isString()",
      ".read": false
    },
    ".read": false,
    ".write": false
  }
}

额外安全建议

  • 启用Firebase匿名认证:应用初始化时调用firebase.auth().signInAnonymously(),规则中可用request.auth != null验证是你的应用用户,而非恶意程序
  • 用控制台的规则模拟器测试不同场景的权限是否符合预期
  • 定期查看Firebase控制台的安全日志,及时发现异常访问行为

内容的提问来源于stack exchange,提问作者MâĴď

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 15:22:46