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

如何允许未认证用户只读Firestore数据且保障数据库安全?

解决方案

你当前的规则允许所有用户(包括未认证)读写所有数据,这就是Firebase提示安全风险的核心原因——任何人都可以修改甚至删除你的Firestore数据。要实现未认证用户只读、同时保证数据库安全,只需调整规则,禁止所有写入操作,仅对未认证用户开放读取权限:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read: if request.auth == null;
      allow write: if false; // 彻底禁止任何写入操作
    }
  }
}

规则说明

  • allow read: if request.auth == null;:仅允许未认证用户读取数据(如果后续需要支持认证用户读取,可改为allow read: if request.auth == null || request.auth != null;,但按你的需求前者已足够)
  • allow write: if false;:完全阻断所有写入请求,不管用户是否认证,从根源避免数据被篡改的风险。

额外安全优化建议

  • 细化读取范围:如果不需要开放所有集合的读取权限,不要用{document=**}通配符,明确指定允许读取的集合,比如只开放public_content集合:
    match /databases/{database}/documents {
      match /public_content/{document=**} {
        allow read: if request.auth == null;
      }
      // 其他集合默认拒绝所有访问
      match /{document=**} {
        allow read, write: if false;
      }
    }
    
  • 启用Firebase App Check:无需用户认证,但可以验证请求是否来自你的合法Flutter应用,防止恶意爬虫或第三方脚本批量爬取数据。
  • 避免存储敏感数据:既然开放了未认证读取,确保Firestore中没有存储用户隐私、API密钥等敏感信息。
  • 配置读取速率限制:在Firebase控制台的Firestore「规则」页面,可设置速率限制,防止大规模数据被恶意爬取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 19:51:21