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

无需身份验证时,如何保护Firebase数据库分支免受恶意操作?

无需登录认证时Firebase数据库设备检测分支的防护方案

1. 禁止分支级删除与全量覆盖

直接限制整个device_vulnerabilities分支的删除权限,同时仅允许创建新条目或更新现有条目,禁止一次性覆盖整个分支:

{
  "rules": {
    "device_vulnerabilities": {
      ".delete": false,
      // 仅允许新增或更新,不允许清空/覆盖整个分支
      ".write": "newData.exists() && (!data.exists() || newData.hasChildren(data.keys()))"
    }
  }
}

2. 强制校验数据结构与字段类型

严格规定上传数据必须包含的字段、类型,拒绝非法格式的垃圾数据:

{
  "rules": {
    "device_vulnerabilities": {
      "$device_entry": {
        ".write": true,
        // 校验必填字段与对应类型
        ".validate": "newData.hasChildren(['device_id', 'vulnerability_status', 'scan_time']) &&
                      newData.child('device_id').isString() &&
                      newData.child('vulnerability_status').isBoolean() &&
                      newData.child('scan_time').isNumber()"
      },
      // 禁止直接操作根分支
      ".write": false
    }
  }
}

3. 绑定设备唯一标识,限制单设备仅能操作自身数据

用设备UUID/IMEI等唯一标识作为节点键,确保每个设备只能修改自己的条目,防止篡改他人数据:

{
  "rules": {
    "device_vulnerabilities": {
      "$device_id": {
        // 校验上传的device_id与节点键一致
        ".validate": "newData.child('device_id').val() === $device_id",
        // 仅允许创建或更新自身条目,禁止删除
        ".write": "newData.exists() && (!data.exists() || data.child('device_id').val() === $device_id)",
        ".delete": false
      },
      ".write": false
    }
  }
}

4. 限制单条数据大小与字段数量

防止恶意上传超大数据占用存储空间:

{
  "rules": {
    "device_vulnerabilities": {
      "$device_entry": {
        // 单条数据不超过1KB
        ".validate": "newData.val().length < 1024",
        // 字段数量不超过5个
        ".validate": "newData.numChildren() <= 5"
      }
    }
  }
}

5. 启用内置速率限制

在Firebase控制台的Realtime Database设置中开启速率限制,比如限制单个IP每分钟最多10次写入请求,拦截批量恶意操作。

6. 禁止批量操作,强制单节点修改

规则中仅允许操作具体的设备条目,禁止一次性修改多个节点:

{
  "rules": {
    "device_vulnerabilities": {
      ".write": false,
      "$device_id": {
        ".write": true,
        // 禁止批量增减子节点(若有多层结构)
        ".validate": "newData.hasChildren() === data.hasChildren()"
      }
    }
  }
}

额外优化建议

  • 用随机UUID而非可预测的字符串作为节点键,避免恶意枚举条目;
  • 定期清理过期数据(如超过30天的扫描记录),缩小攻击面;
  • 客户端生成本地存储的设备令牌,上传时携带,规则中校验令牌与设备ID的绑定关系,进一步降低篡改风险。

内容的提问来源于stack exchange,提问作者im narwhal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 07:24:19