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

Firestore与Firebase Storage安全规则:防止外部注册问题咨询

Firebase安全规则与API密钥限制的问题解答

仅通过限制API密钥的使用域名不足以阻止外部人员注册并登录你的应用,这种客户端层面的防护很容易被绕过,必须搭配其他安全措施才能有效降低风险。

为什么域名限制不够?

  • 域名校验是在客户端完成的,攻击者可以通过修改请求头、使用代理工具,甚至在你允许的域名下搭建恶意页面,轻松绕过限制调用Firebase的认证接口。
  • React应用的API密钥会被打包到前端代码中,任何人都能通过查看页面源码提取密钥,拿到密钥后只要绕过域名限制,就能调用createUserWithEmailAndPassword注册账号。

建议补充的安全措施

  • 启用Firebase App Check
    App Check能验证请求是否来自你的合法应用,Web端可搭配reCAPTCHA v3使用,能有效拦截自动化恶意请求。配置后,只有通过验证的请求才能访问Firebase的认证、Firestore和Storage服务,比单纯的域名限制可靠得多。

  • 开启注册频率限制
    在Firebase认证控制台启用「暴力保护」功能,限制同一IP或邮箱前缀的注册请求频率,防止攻击者批量创建账号。也可以通过云函数在注册环节添加额外校验,比如结合验证码进一步过滤恶意请求。

  • 监控异常行为
    启用Firebase Analytics和Cloud Monitoring,设置告警规则——比如短时间内出现大量新用户注册、异常高频读写操作时,及时触发通知,方便你快速介入处理。

  • 补充细粒度规则(可选)
    即使允许所有登录用户读写,也可以针对敏感路径添加基础限制,比如Firestore里限制文档大小、禁止删除特定数据,Storage里限制上传文件的类型和大小,避免恶意用户破坏数据。示例规则:

    // Firestore示例
    service cloud.firestore {
      match /databases/{database}/documents {
        match /{document=**} {
          allow read, write: if request.auth != null 
            && request.resource.data.size() < 1000; // 限制单文档大小
        }
      }
    }
    
    // Storage示例
    service firebase.storage {
      match /b/{bucket}/o {
        match /{allPaths=**} {
          allow read, write: if request.auth != null
            && request.resource.contentType.matches('image/.*') // 仅允许图片上传
            && request.resource.size < 5 * 1024 * 1024; // 限制文件大小不超过5MB
        }
      }
    }
    

如果你的业务确实需要所有登录用户拥有完全的读写权限,以上措施能在满足需求的同时,大幅提升应用的安全性,弥补单纯域名限制的短板。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:52:52