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

如何用Firebase Validate规则限制仅写入指定字段?

Firebase实时数据库规则限制指定字段及账单担忧解答

一、限制仅写入name和phone字段的规则写法

要禁止写入额外字段,你需要在规则中验证写入数据的键集合严格等于指定的两个字段,结合原有“必须包含name和phone”的要求,完整规则示例如下:

{
  "rules": {
    "user": {
      "$userId": {
        ".write": "auth != null && auth.uid == $userId", // 确保只有用户自己能操作自己的节点
        ".validate": "
          newData.hasChildren(['name', 'phone']) &&
          newData.child('name').isString() &&
          newData.child('phone').isString() &&
          newData.hasOnly(['name', 'phone'])
        "
      }
    }
  }
}

规则说明:

  • newData.hasChildren(['name', 'phone']):确保写入数据包含必填的两个字段
  • newData.child('name').isString() 和 newData.child('phone').isString():验证字段类型符合预期(可根据实际需求调整,比如phone也可以设为数字类型)
  • newData.hasOnly(['name', 'phone']):核心限制,直接验证写入数据的键只能是指定的两个字段,拦截任何额外字段

在Rules Playground测试时,写入包含data这类额外字段的数据会被规则拦截,只有仅包含name和phone的写入才能通过。

二、关于账单过高的担忧是否必要

这种担忧是合理的:

  1. 存储成本:额外字段会占用更多数据库存储空间,大量冗余数据会直接增加存储费用。
  2. 操作成本:如果恶意用户频繁写入带额外字段的数据,会增加写入操作次数,而Firebase实时数据库按操作次数+存储量计费,次数过多也会推高账单。

你可以通过以下方式进一步降低风险:

  • 严格控制写入权限:确保.write规则只允许认证用户操作自己的节点,避免未授权用户恶意写入。
  • 设置用量告警:在Firebase控制台配置用量阈值告警,当存储或操作量接近限额时及时收到通知。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:45:34