首页 > 解决方案 > 为什么允许从客户端写入 Firebase 是可以的?

问题描述

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

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

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

标签: firebasefirebase-realtime-databasegoogle-cloud-firestore

解决方案


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

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

要了解有关此的更多信息,请参阅:


推荐阅读