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

如何限制仅特定域名请求可访问Firestore数据库且无需身份认证?

你写的这段Firestore安全规则无法实现你要的防范Postman等工具恶意调用的需求。
原因很简单:request.origin 是HTTP请求中可自由伪造的头字段,攻击者只需要在Postman等请求工具中手动将Origin头设置为你的自有域名,就能轻松绕过这个限制,完全起不到防护作用。

可行的解决方案

你可以根据自身业务场景选择以下两种方案,无需引入Firebase Authentication体系即可实现需求:

方案1:启用Firebase App Check(最推荐)

这是Firebase官方提供的客户端合法性校验能力,专门用于防止未授权的客户端访问你的云资源:

  • 在Firebase控制台中为你的Web应用绑定你的自有域名,完成App Check的Web端配置
  • 前端集成App Check SDK后,合法的前端请求会自动携带官方签发的校验令牌,攻击者无法伪造
  • 调整你的Firestore安全规则如下即可完成限制:
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.appCheck.valid == true;
    }
  }
}

方案2:通过反向代理封装所有Firestore操作

  • 你可以使用Cloud Functions、Cloud Run或者自有业务后端,将所有Firestore读写操作封装为自定义接口
  • 关闭Firestore的公开访问权限,仅允许你的后端服务账号调用Firestore
  • 在自定义接口层统一校验请求的Origin,仅放行来自你自有域名的请求,前端所有数据库操作都通过自定义接口转发,不直接调用Firebase SDK访问Firestore。
    这种方案可定制性更高,但需要额外开发接口层。

注意:无论选择哪种方案,都建议配合最小权限原则细化Firestore安全规则,不要全局开放所有文档的读写权限,进一步降低数据泄露风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:54:03