firebase匿名用户的安全颤振应用程序

firebase匿名用户的安全颤振应用程序,firebase,flutter,firebase-authentication,Firebase,Flutter,Firebase Authentication,我有一个连接到firebase云存储以存储图像和firestore以存储数据的应用程序。我添加了一些安全规则,要求用户通过身份验证才能修改数据。我的应用程序不允许用户与firebase连接,我使用另一项服务,因此我在应用程序启动时进行了自动匿名firebase身份验证,以便用户可以使用该应用程序。我认为计算机在firebase(android)控制台中输入的SHA-1键将阻止android应用程序在另一台机器上编译,从而保证匿名用户在我的应用程序上。但是,我可以在另一台计算机上构建和运行应用程序

我有一个连接到firebase云存储以存储图像和firestore以存储数据的应用程序。我添加了一些安全规则,要求用户通过身份验证才能修改数据。我的应用程序不允许用户与firebase连接,我使用另一项服务,因此我在应用程序启动时进行了自动匿名firebase身份验证,以便用户可以使用该应用程序。我认为计算机在firebase(android)控制台中输入的SHA-1键将阻止android应用程序在另一台机器上编译,从而保证匿名用户在我的应用程序上。但是,我可以在另一台计算机上构建和运行应用程序而不会出现任何问题,就像匿名允许那样?如何保护我的应用程序?
感谢

Firebase用于在服务器上查找您的项目的配置数据不是秘密(请参阅),任何人都可以从您的应用程序中获取这些数据,然后还可以使用这些数据对您的项目进行API调用。目前有一种方法可以确保对API的调用只能来自您的应用程序(请参阅)

相反,您应该做的是创建安全规则,确保所有访问都经过授权,而不管API从何处调用。通过Firebase的服务器端安全规则做到这一点可以确保没有人可以绕过这些规则,即使是恶意用户也不行


假设您在Firebase存储中为每个用户提供了自己的文件夹。那你就可以了。有了这些安全规则,他们是否使用你的应用程序访问文件,或者是否使用你的项目密钥和自己的代码调用API都不再重要了:,由于访问由服务器端安全规则控制。

Firebase用于在服务器上查找您的项目的配置数据不是秘密(请参阅),任何人都可以从您的应用程序中获取这些数据,然后还可以使用这些数据对您的项目进行API调用。目前有一种方法可以确保对API的调用只能来自您的应用程序(请参阅)

相反,您应该做的是创建安全规则,确保所有访问都经过授权,而不管API从何处调用。通过Firebase的服务器端安全规则做到这一点可以确保没有人可以绕过这些规则,即使是恶意用户也不行

假设您在Firebase存储中为每个用户提供了自己的文件夹。那你就可以了。有了这些安全规则,他们是否使用您的应用程序访问文件,或者是否使用您的项目密钥和自己的代码调用API都不再重要,因为访问由服务器端安全规则控制

我认为计算机在firebase(android)控制台中输入的RSA密钥将阻止android应用程序在另一台机器上编译,从而保证匿名用户在我的应用程序上

这不是真正的工作方式。您不能限制Firebase Auth在不同的设备或计算机上工作。底层RESTAPI是公共的,可以从internet上的任何地方调用。您在控制台中输入的SHA-1键用于识别您的应用程序,而不是硬件

我认为计算机在firebase(android)控制台中输入的RSA密钥将阻止android应用程序在另一台机器上编译,从而保证匿名用户在我的应用程序上


这不是真正的工作方式。您不能限制Firebase Auth在不同的设备或计算机上工作。底层RESTAPI是公共的,可以从internet上的任何地方调用。您在控制台中输入的SHA-1键用于识别您的应用程序,而不是硬件。

谢谢您的回答。问题是这些图像必须是每个人都能读的,图像不是私人的,我需要的是书写规则。我可以在创建时将图像与匿名用户关联,这样只有他才能修改图像,但如果他断开连接并重新连接,他将无法再修改图像,因为他将使用另一个id进行身份验证?如果图像需要公开可读,但只能由文件夹中指定的用户写入,这仍然是你在安全规则中控制的东西。如果匿名用户注销,他们将无法恢复相同的UID。这是匿名固有的。如果您希望他们能够跨安装/设备重用相同的UID,您应该使用其他允许的提供商之一。谢谢您的回答。问题是这些图像必须是每个人都能读的,图像不是私人的,我需要的是书写规则。我可以在创建时将图像与匿名用户关联,这样只有他才能修改图像,但如果他断开连接并重新连接,他将无法再修改图像,因为他将使用另一个id进行身份验证?如果图像需要公开可读,但只能由文件夹中指定的用户写入,这仍然是你在安全规则中控制的东西。如果匿名用户注销,他们将无法恢复相同的UID。这是匿名固有的。如果您希望他们能够跨安装/设备重用相同的UID,您应该使用其他允许的提供商之一。我认为在另一个应用程序上使用firebase phone auth是安全的,如果我使用未注册的计算机编译应用程序,我会收到一个错误,告诉我我我的计算机未经授权。感谢他们将无法编译/发布代码,但他们可以使用应用程序中相同的配置数据来调用FIrebase API。有关前面讨论过的问题,请参阅我答案中的第二个链接。我认为这是一种安全性,在另一个应用程序上使用firebase phone auth,如果我使用未注册的计算机编译应用程序,我会收到一个错误,告诉我我的计算机未经授权。谢谢他们将无法编译/发布代码,但是