0

如果用户gps位置大于10米,是否可以编写规则以防止阅读文档?
集合是“商店”和文档(文档 ID 是自动生成的 ID)包含字段 GPS 位置

4

1 回答 1

0

Firestore 的服务器端安全规则只能读取编码到该用户 ID 令牌中的用户信息。因此,这意味着只有将用户的 GPS 位置数据编码到他们的 ID 令牌中,并且以安全的方式执行此操作,才能实现此功能。

我能想到的步骤:

  1. 在设备上确定用户的位置。
  2. 将该位置发送到云功能(或其他受信任的环境,例如您控制的服务器)。
  3. 以某种方式验证用户确实在此位置。
  4. 将位置作为自定义声明设置到用户的个人资料中,如此处所示。
  5. 回复客户他们的个人资料已更新。
  6. 回到设备上,使用此响应刷新 ID 令牌,使其具有位置信息。
  7. 将请求发送到数据库,该数据库现在将包含此位置信息。
  8. 通过将请求/查询中的信息与文档中的数据进行比较,确保请求的文档在安全规则的要求范围内。

正如你所看到的,这个过程非常复杂,我什至不确定如何保护第 3 步。所以你必须想知道保护用例是否值得付出努力,或者是否最好只限制人们可以在任何时候请求数据的数量和范围之外的数据。

于 2020-03-22T16:05:42.810 回答