我目前正在构建一个应用程序(后端和前端),我使用Firebase保存用户可以上传和下载的图片,到目前为止,我一直在从前端上传图片,如果上传是成功后,我会将图像链接和其余数据发送到后端,但是由于我在应用程序中保存了Firebase凭据(以便进行连接),现在我在询问是否最好/更安全地在应用程序中完成所有操作后端,发送所有信息(包括图像),然后让后端将图像上传到Firebase。我不知道这些凭据对应用程序有多安全
答案 0 :(得分:1)
如果Firebase SDK有我需要的东西,我通常会在前端处理。不执行此操作的唯一常见原因是需要在后端进行操作。这仅适用于以下操作:需要大量内存/ CPU /带宽,需要访问机密信息(例如,支付网关的API密钥)或代码本身是机密的(例如,检测游戏中的作弊行为,或聊天应用中的恶意消息。
例如,在您的情况下,直接从前端上传到Cloud Storage是使用Firebase SDK的重要原因。这样做意味着Firebase负责编码,重试,安全性以及许多其他事情。如果要在中间引入自己的服务器,则必须编写(客户端和服务器)代码来自己处理所有这些事情。
请注意,Firebase告诉您通过google-services.json
添加到应用程序中的密钥是不是凭据,而仅仅是应用程序在服务器上找到Firebase项目所需的配置数据。有关更多信息,请在这里查看我的答案:Is it safe to expose Firebase apiKey to the public?
但是,有了配置数据,任何人都可以在您的项目上调用Firebase API方法。因此,您需要以某种方式保护访问权限,以防止其他用户提出自己的使用您项目的代码。
执行此操作的常用方法是在客户端上使用Firebase Authentication登录应用程序的用户。然后在Cloud Storage中使用Firebase security rules至limit who can read/write what files。