【问题标题】:Why is it okay to allow writes into Firebase from the client side?为什么允许从客户端写入 Firebase 是可以的?
【发布时间】:2019-11-05 04:14:18
【问题描述】:

我知道在从 Firebase 查询时,您应该格外小心,以确保您正在读取您想要的数据,但前端写入是否容易受到恶意攻击?例如,攻击者可以用字符串(或者可能是字典)而不是数字来填充他们的年龄字段。假设我在后端做了一个巨大的查询来计算我网站上用户的平均年龄。我为每个年龄做一个 get 并忘记将任何字符串强制为整数。使用字符串执行此计算会使我的应用程序崩溃。

此外,有人可能会通过加载大量数据来攻击我的网站。即使我设置安全规则只允许某人更改他们的姓名,他们也可以将姓名设置为包含大量数据的巨型字典。

从客户端代码调用我的后端 api 不是更安全吗?此 api 将验证所有数据是否符合预期,并且不包含随机字典或无效数据类型。

【问题讨论】:

    标签: firebase firebase-realtime-database google-cloud-firestore


    【解决方案1】:

    借助 Firebase(实时数据库和 Cloud Firestore),您将使用服务器端安全规则来强制执行写入数据的格式,并确保所有数据访问均已获得授权。例如,您可以确保用户只能修改自己的姓名,并且他们只能编写一定长度的姓名。

    由于这些规则是在 Firebase 的服务器上强制执行的,因此客户端代码无法绕过它们。从这个意义上说,它们可以保护您免受您自己的客户端代码中的错误以及可能获取您的配置信息并尝试使用该配置信息访问数据的恶意用户。

    要了解更多信息,请参阅:

    【讨论】:

    • 特别是对于名称示例,安全规则可以将其强制为字符串类型并限制为特定的合理长度,就像您在自己的后端 API 代码中所做的那样。
    • 糟糕,我完全错过了这个问题。好点丹。
    猜你喜欢
    • 2020-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 2022-11-18
    相关资源
    最近更新 更多