【问题标题】:Firestore, how to secure user input?Firestore,如何保护用户输入?
【发布时间】:2019-02-28 13:32:21
【问题描述】:

我正在尝试将我的所有后端都放在 Firestore 上。

每次用户登录时,我都想更新 users 集合中的 lastConnectionDate

我的问题是所有这些数据都是通过 Javascript 发送的,所以不安全。我如何确定用户不会作弊并说他的 lastConnectionDate 是 50 年前?

使用“经典”后端,我只需添加当前后端日期而不要求用户提供它。

如何使用 Firebase/Firestore 保护此过程?

【问题讨论】:

    标签: javascript firebase google-cloud-firestore firebase-security


    【解决方案1】:

    有一个特殊的FieldValue.serverTimestamp() marker value 用于在 Firestore 写入操作中设置服务器端日期。

    在安全规则中有一个特殊的request.time variable 包含当前时间。

    通过在您的安全规则中比较这两个,您可以验证写入的任何值是否与服务器上的当前时间相同。

    【讨论】:

    • 谢谢,这正是我想要的!
    【解决方案2】:

    使用 firebase 函数设置 lastConnectionDate。也许使用身份验证触发器

    https://firebase.google.com/docs/functions/auth-events

    【讨论】:

    • 谢谢,我不知道。在这种特定情况下,弗兰克的答案更合适,但我会将您的答案用于其他字段类型!
    猜你喜欢
    • 2023-04-02
    • 1970-01-01
    • 2016-08-28
    • 2014-04-01
    • 2018-07-17
    • 2018-04-09
    • 2022-11-23
    • 2021-09-09
    • 2023-04-07
    相关资源
    最近更新 更多