在Android应用程序中对Firestore的集合名称或文档ID进行硬编码是否安全?

时间:2020-06-25 17:05:26

标签: android firebase google-cloud-firestore

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

1 个答案:

答案 0 :(得分:1)

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

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

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

您还应该知道,每当您开始通过公共API提供数据时,总会有人会尝试滥用系统。对于所有基于云的服务,这都是一个问题。如果您怀疑自己项目中的滥用行为,请contact Firebase support directly