firebase - 为什么允许从客户端写入 Firebase 是可以的?
问题描述
我知道从 Firebase 查询时,您应该格外小心,以确保您正在读取您想要的数据,但前端写入是否容易受到恶意攻击?例如,攻击者可以用字符串(或者可能是字典)而不是数字来填充他们的年龄字段。假设我在后端做了一个巨大的查询来计算我网站上用户的平均年龄。我为每个年龄做一个 get 并且忘记将任何字符串强制为整数。使用字符串进行此计算会使我的应用程序崩溃。
此外,有人可能会通过加载大量数据来攻击我的网站。即使我设置安全规则只允许某人更改他们的名字,他们也可以将名字设置为包含大量数据的巨型字典。
从客户端代码调用我的后端 api 不是更安全吗?此 api 将验证所有数据是否符合预期,而不是充满随机字典或无效数据类型。
解决方案
借助 Firebase(实时数据库和 Cloud Firestore),您将使用服务器端安全规则来强制执行写入数据的格式,并确保所有数据访问均已获得授权。例如,您可以确保用户只能修改自己的姓名,并且他们只能编写一定长度的姓名。
由于这些规则是在 Firebase 的服务器上强制执行的,因此客户端代码无法绕过它们。从这个意义上说,它们可以保护您免受自己客户端代码中的错误以及可能获取您的配置信息并尝试使用该配置信息访问数据的恶意用户的侵害。
要了解有关此的更多信息,请参阅:
一般安全规则的文档。
有关Cloud Firestore安全规则的文档。
实时数据库安全规则的文档。
关于Firebase 安全规则主题的更多问题
推荐阅读
- amazon-web-services - 设置 AWS Cloudwatch 警报数据点时间跨度和将其关闭的操作
- nginx - 从 http 到 https 的重定向在 nginx 中不起作用
- excel - 使用 OLEDB 连接将 Access 数据库连接到 Excel
- linux - ceph-rgw 安装后服务自动停止
- android - Android Studio 模拟器的 Android 8、9 和 10 ARM 映像在哪里?
- .net-core - 有没有办法在 .NET Core 库中包含 .NET Framework 代码?
- docker - 将 kafDrop 连接到安全代理
- postman - 收集运行中的邮递员收集变量
- c++ - 无法使用 Arduino 和 SIM900 连接或发布到 MQTT 代理
- c# - 堆栈溢出响应 API