首页 > 解决方案 > 在 Android 应用中硬编码 Firestore 的集合名称或文档 ID 是否安全?

问题描述

我的 Firestore 数据库中有一个“帖子”集合。要从此集合中获取文档,get()可以使用该方法,例如FirebaseFirestore.getInstance().collection("posts").limit(10).get();. 现在,如果有人在加密和使用 proguard 之后以某种方式对我的应用程序进行逆向工程并找出集合名称“posts”,那么该人是否可以运行该命令FirebaseFirestore.getInstance().collection("posts").get();以不受任何限制地一次从他身边获取所有文档?这可能是一个潜在威胁,因为这可能会减慢其他用户的服务并显着增加 Firestore 成本,这类似于 DoS 攻击,即使 Firestore 规则设置为只有登录用户才能访问集合“帖子”。有没有办法防止此类攻击?

标签: androidfirebasegoogle-cloud-firestore

解决方案


如果您的客户端代码完全查询 Firestore,则无法完全隐藏您正在使用的集合和文档的名称。一旦字符串在客户端应用程序中可用,它本质上就是公共信息。

开发人员应使用安全规则来确定谁可以读取和写入哪些集合和文档。由于它们是在服务器上评估的,因此无法从客户端代码中绕过它们。您可以实施安全规则,以您的应用所需的方式正确限制访问。

Firestore 是由 Google 管理的云服务,它会检测某些形式的滥用行为。您不必担心管理系统上的负载 - 它可以大规模扩展。

您还应该知道,每当您开始通过公共 API 提供数据时,总会有人试图滥用该系统。这是所有基于云的服务的问题。如果您怀疑项目中存在滥用行为,请直接联系 Firebase 支持


推荐阅读