无需认证使用Firebase实时数据库的规则配置咨询
Firebase实时数据库无认证场景的规则配置
你用的全开放规则(.read和.write都设为true)之所以会失效,是因为Firebase的安全系统会自动识别这种过于宽松的权限设置,一段时间后会强制限制数据库的读写操作,防止恶意滥用。
针对无认证的场景,有两种可行的规则配置方案:
一、开发调试临时规则(仅限开发阶段)
可以给规则添加时间过期限制,避免被Firebase的安全机制拦截,示例如下:
{ "rules": { ".read": "now < 1735689600000", // 时间戳对应2024年1月1日,可自行修改 ".write": "now < 1735689600000" } }
这种规则会在指定时间后自动失效,适合短期开发调试使用。
二、生产环境可用规则(必须缩小权限范围)
如果要在生产环境使用无认证访问,绝对不能全开放权限,必须缩小读写范围或添加数据校验,示例如下:
示例1:仅开放特定节点的读写权限
{ "rules": { "public_data": { // 只开放名为public_data的节点 ".read": true, ".write": true }, // 其他节点默认禁止访问 ".read": false, ".write": false } }
示例2:开放节点同时限制写入数据格式
{ "rules": { "public_data": { ".read": true, ".write": true, "$entry": { // 校验写入的数据必须包含content和timestamp字段,且timestamp是数字类型 ".validate": "newData.hasChildren(['content', 'timestamp']) && newData.child('timestamp').isNumber()" } }, ".read": false, ".write": false } }
通过缩小权限范围、添加数据校验,Firebase不会判定规则为危险配置,能保证数据库长期正常运行,同时也能降低数据被恶意篡改或泄露的风险。
内容的提问来源于stack exchange,提问作者Punit Katara
相关产品推荐
相关产品推荐

