Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud firestore 禁用从应用程序外部访问Firestore_Google Cloud Firestore_Firebase Authentication - Fatal编程技术网

Google cloud firestore 禁用从应用程序外部访问Firestore

Google cloud firestore 禁用从应用程序外部访问Firestore,google-cloud-firestore,firebase-authentication,Google Cloud Firestore,Firebase Authentication,我有一个私人的,也就是说,为我自己和其他几个人开发的Flitter应用程序,应该在iOS和Android上运行。它在幕后使用Firestore进行数据共享,并使用Firebase身份验证,Google登录是其唯一的提供商。以下是设置的详细信息: 访问规则只允许经过身份验证的用户访问,即Firebase项目知道的任何用户。 为了防止其他人使用我的密钥,我针对他们各自的应用程序类型对它们进行了限制,即仅针对给定的iOS捆绑包id使用iOS密钥,仅针对指定的包名使用Android密钥,以及针对我的调试

我有一个私人的,也就是说,为我自己和其他几个人开发的Flitter应用程序,应该在iOS和Android上运行。它在幕后使用Firestore进行数据共享,并使用Firebase身份验证,Google登录是其唯一的提供商。以下是设置的详细信息:

访问规则只允许经过身份验证的用户访问,即Firebase项目知道的任何用户。 为了防止其他人使用我的密钥,我针对他们各自的应用程序类型对它们进行了限制,即仅针对给定的iOS捆绑包id使用iOS密钥,仅针对指定的包名使用Android密钥,以及针对我的调试密钥SHA1。 问题:这是否保证知道我的项目id和db URL等的人在没有我的应用程序的情况下不能简单地读写数据?源代码位于GitHub上,GoogleService-Info.plist和google-services.json也已提交。我做了一些研究,似乎这些信息不是秘密,因为它是在APK和IPA无论如何

我的假设,如果我错了,请纠正我的假设:

尽管可以使用邮递员(Postman)访问数据库,但根据我的安全规则,他们必须向我的Firebase项目知道的有效用户进行身份验证。 要从我的应用程序外部将用户添加到我的Firebase用户数据库,必须有人使用我的项目信息和API密钥。如果他们能够做到这一点,他们只需使用谷歌登录他们的账户,这将在我的项目中创建一个新用户,并使用该应用程序。 在我的情况下,这意味着他们需要创建一个iOS或Android应用程序,因为这些键是“作用域”的,也就是说,它们只允许用于特定类型的iOS和Android应用程序。他们不能在webapp中使用API密钥。这真的是真的吗?密钥中是否有任何信息可以防止(比如)Android密钥被用于iOS应用程序,或者反之亦然? 这对于Android来说是不可能的,因为我限制了密钥-攻击者必须创建一个与我允许的包名相同的Android应用程序,但也必须使用我仅有的私钥对其进行签名。 我对iOS不是很确定。我还通过指定bundle id来限制密钥,在为设备构建时,密钥必须是全局唯一的,但老实说,我不知道它是否也需要为模拟器唯一。如果没有,这将意味着有人可以用我的bundle id创建一个应用程序,在他们的模拟器上运行,用他们的Google帐户登录,从现在起就可以访问数据。
有人能证实这是我想象的那样吗?并澄清3中的密钥疑问和5中的iOS疑问?

如果您仍然需要帮助,您可以在此处联系Firebase的免费支持: