如何设置Firebase Realtime Database域名白名单拦截未授权站点请求
Firebase Realtime Database 域名访问限制配置遗漏项说明
你之前配置的两类规则都不会对无认证状态下的Realtime Database访问生效,原因如下:
- Google Cloud控制台配置的API Key HTTP Referrer限制,作用是拦截第三方滥用你的API Key调用谷歌云公开服务接口,不会对Firebase Realtime Database的读写请求做校验
- Firebase Auth的授权域名配置,作用是限制登录、OAuth回调等身份认证相关请求的来源域名,你没有启用用户认证流程,该配置完全不生效
你遗漏的核心配置是Realtime Database专属的安全规则,这是Firebase管控数据库访问的唯一强制校验层,适配你需求的配置步骤如下:
- 打开Firebase控制台,进入对应项目的「Realtime Database」-「规则」页面
- 替换原有规则为以下内容,匹配你的website1域名访问需求:
{ "rules": { ".read": "request.headers.referer.matches('^https?://www\\.website1\\.com/.*')", ".write": "request.headers.referer.matches('^https?://www\\.website1\\.com/.*')" } }
- 点击发布规则,配置会在1分钟内生效,后续所有非website1来源的读写请求都会被直接拦截
补充说明
- 上述规则用正则同时兼容http和https协议的请求,如果你后续站点升级为HTTPS-only,可以调整正则去掉
http?中的?即可 - Referer头存在被技术手段伪造的可能,该方案适配你公开无认证的低风险场景,如果后续有更高安全要求,可以新增Firebase匿名认证逻辑,结合安全规则做更严格的校验
- 你之前配置的API Key Referrer限制可以保留,和数据库安全规则形成双重防护,避免API Key被滥用调用其他谷歌云服务
内容的提问来源于stack exchange,提问作者tim pickup
相关产品推荐
相关产品推荐

