如何设置Firebase实时数据库规则仅允许指定keystore签名应用读写?
仅允许特定签名应用访问Firebase实时数据库的规则配置
核心思路
Firebase实时数据库的安全规则可通过验证请求来源应用的签名哈希值,限制仅你指定keystore签名的应用能读写数据。具体实现步骤如下:
1. 获取应用签名哈希
使用keytool工具生成发布版(或调试版)keystore的SHA-256哈希值:
keytool -exportcert -list -v -alias <你的keystore别名> -keystore <你的keystore文件路径>
从输出结果中提取SHA-256字符串,去掉所有冒号(比如AA:BB:CC...转为AABBCC...),大小写不影响匹配。
2. 在Firebase控制台配置签名哈希
打开Firebase控制台进入你的项目,按以下路径操作:
- 项目设置 → 应用 → 找到对应的Android应用
- 添加刚才获取的SHA-256哈希值(调试版和发布版的哈希需分别添加)
3. 编写安全规则
在Firebase实时数据库的规则编辑器中,利用request.auth.token.android_signer_in_sha256变量验证签名哈希,示例规则如下:
{ "rules": { ".read": "request.auth != null && request.auth.token.android_signer_in_sha256.contains('<你的SHA-256哈希值>')", ".write": "request.auth != null && request.auth.token.android_signer_in_sha256.contains('<你的SHA-256哈希值>')" } }
- 说明:
android_signer_in_sha256会返回当前请求应用的所有签名哈希数组,只要包含你配置的哈希值,就允许访问。 - 额外提示:保留
request.auth != null要求用户必须登录,避免签名哈希被伪造后无限制访问;若无需用户认证,可去掉该条件,但安全性会降低。
注意事项
- 调试版和发布版应用的签名哈希不同,务必都添加到Firebase控制台,否则对应版本的应用会被拒绝访问。
- 签名哈希属于敏感信息,不要随意泄露给第三方。
- 建议结合其他安全规则(比如用户角色权限),实现多层安全防护。
内容的提问来源于stack exchange,提问作者Don Moon
相关产品推荐
相关产品推荐

