Firestore客户端set()和字段架构验证

问题描述 投票:0回答:1

我正在使用Firestore创建React本机应用程序,但不确定如何在document creation上执行安全模式验证并进行更新。

如果我了解安全规则,则可以:

  • 限制谁可以对文档执行操作(更新,读取,写入等)
  • 基于字段条件允许的限制操作
  • 基于自定义功能(post w/ examples)允许的限制操作

[我的担心是,由于请求的客户端性质,精明的用户可以利用其身份验证和一些客户端代码将.set()任何字段或映射/对象设置为所需的任何值,除非安全规则阻止了它。看来我可以使用非常复杂的自定义函数来验证接收到的数据。我也可以验证每个更新并通过Cloud Function API创建,但是我尝试尽可能使用Firestore数据库本身。

我是否应该担心用户滥用授权文档(即,具有最低userId规则的文档)上的.set()字段创建功能的可能性?

是否存在创建安全规则以防止客户端滥用没有验证模式的自定义功能的文档的安全规则?

firebase validation google-cloud-firestore firebase-security database-schema
1个回答
0
投票

比较您的问题中的这两个陈述:

  1. “我可以使用非常复杂的自定义函数来验证收到的数据”
  2. “我还可以验证每个更新并通过Cloud Function API创建”

在两种情况下,您都在编写自定义代码,以确保用户输入的数据根据​​您的业务规则有效。由于这些规则是特定于您的业务的,因此无法阻止您编写它们。唯一的区别是您编写这些业务规则的where。使用Cloud Functions,您可以在可能已经熟悉的环境中以常规JavaScript代码编写验证。使用安全规则,您必须以特定于域的语言编写验证,您必须学习该语言。

© www.soinside.com 2019 - 2024. All rights reserved.