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

Firestore Security Rules数据校验:如何拒绝含未知额外字段的写入请求

实现方案

你可以通过Firestore安全规则内置的keys()和hasOnly()方法组合校验,直接限制写入的字段只能是name:

match /my-data/{userId}
{
  allow write: if request.resource.data.keys().hasOnly(["name"]) && "name" in request.resource.data;
}

规则说明

  • request.resource.data.keys():获取本次写入请求携带的所有字段名集合
  • hasOnly(["name"]):校验所有字段名都只能是传入数组内的取值,只要存在任意额外字段就会返回false
  • 保留"name" in request.resource.data是为了避免空写入请求(没有携带任何字段)被误放通,确保name字段必须存在

适配部分更新场景

如果你需要兼容patch类型的更新操作,要求更新时也只能修改name、不能新增/修改其他字段,可以改用如下规则,只校验本次更新涉及的字段:

match /my-data/{userId}
{
  allow write: if request.resource.data.diff(resource.data).affectedKeys().hasOnly(["name"]) && "name" in request.resource.data;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:36:03