GOOGLE FIRESTORE:这些安全规则安全吗?

时间:2020-11-08 16:29:50

标签: ios database firebase google-cloud-firestore firebase-security

因此,我现在正在浏览firestore的安全规则文档,以确保用户放入我的应用程序中的数据可以正常进行。到目前为止,我需要用户能够做的就是读取数据(实际上只有“ get”,但是“ read”也可以)并创建数据。因此,我目前对Firestore数据的安全规则是:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /jumpSpotAnnotations/{id} {
      // 'get' instead of 'read' would work too
      allow read, create;
    }
  }
}

我有完全相同的“允许读取,创建;”也是我的存储数据释放后可以吗?还是有危险?他们在文档中写道:

”“设置Cloud Firestore时,您可能已经设置了允许在开发过程中进行开放访问的规则。您可能会认为自己是使用应用程序的唯一人,但是如果已部署,则可以在Internet上使用它如果您不对用户进行身份验证和配置安全规则,那么任何猜出您的项目ID的人都可以窃取,修改或删除数据。”

本文前面的示例中的规则是“允许读,写;”,而不是我的“允许读,创建”。我的规则也受数据删除/修改的约束吗?之所以放置create,是因为我认为那只能让人们创建数据,而不能删除或修改数据。

这个问题的最后一部分,但是用户如何猜测我的项目ID?他们是否不必登录我的Google帐户即可手动删除,修改或窃取数据?我不确定这是如何工作的。我的应用程序界面允许用户仅创建数据或读取数据,而不能进行其他任何操作。那么,某个随机的人还能以某种方式在线进入该数据库并弄乱它吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您的规则允许具有Internet连接的任何人读取并创建jumpSpotAnnotations集合中的文档。我们不知道这对您的应用程序是否“安全”。您必须自己确定这种情况是否安全。如果您同意某人用文档匿名加载该集合,并且可以为该行为付费,那么这是安全的。

您的项目ID在发布之前已包含在您的应用中。某人要做的就是下载并反编译您的应用程序以找到它。不难您的项目ID不是私人信息。

答案 1 :(得分:0)

否,您的规则并不安全,要了解某人如何猜测您的项目ID并先窃取数据,您必须了解Firebase提供了一个简单的REST API来访问存储的数据。所有数据都以JSON格式存储,因此可以通过向附加“ .json”的数据库URL发出请求来访问公共数据库。

现在主要关注的是某人如何猜测您的项目ID,请参阅许多可用的工具,您可以通过这些工具在网络上设置代理,并分析每一个正在处理的请求。正如Google已经说过的那样,firebase仅使用rest API,因此可以通过拦截HTTP请求轻松了解API端点,然后,如果您的规则不安全,则可能会破坏您的数据。

现在的解决方案,如何保护您的数据。看到Firebase提供了很多方法来保护数据,只需阅读他们有关数据库安全性的文档,就可以看到很多方法。但是您可以从自己的角度做一些事情,这样一来,如果您的数据遭到破坏,那么其他人也将无法真正读取它。 您可以阻止应用读取纯文本数据。使用公共密钥算法来加密数据。将私钥保留在必须读取数据的系统上。然后,应用程序无法读取纯文本格式的数据。这也不会阻止数据的操纵或删除。