首页 > 解决方案 > 如何在js中正确使用firebase,而不向用户公开数据库?

问题描述

我正在尝试将 firebase 与 firebase 托管(节点 js 后端)一起使用,以让登录用户上传文件。

我让用户使用电子邮件和密码登录。该文件应上传到 firebase 存储,其详细信息(由用户通过表单提供)存储在 firebase 数据库中。

我在js(客户端)中使用firebase成功地做到了这一点。

然而,在客户端使用firebase,任何人都可以编写任何javascript代码来对firebase db、存储做任何事情,甚至他们可以直接创建一个新用户,这非常糟糕。

我的数据库安全规则:

".read": "auth != null",
".write": "auth != null"

我找不到任何有用的内容。即使在 Google 的官方示例代码(用于 js)中也是以类似的方式实现的。

那么,在没有上述问题的情况下,我应该如何在 js 中正确使用 firebase,或者我什至应该使用它?我应该将所有内容都转移到 node.js 后端吗?但是那我如何在node js中获取用户上传的文件呢?

标签: javascriptnode.jsfirebasefirebase-realtime-databasefirebase-authentication

解决方案


你有两个选择。

  1. 为直接访问您的数据库和存储的移动和 Web 客户端正确实施安全规则。有适用于实时数据库、Firestore 和 Cloud Storage 的安全规则。

  2. 将所有内容移至后端,您的客户端应在每个请求中传递 Firebase Auth ID 令牌,使用 Firebase Admin SDK 对其进行验证,并且仅在允许该用户时才执行操作,无论您选择何种逻辑。

由您决定哪个选项更适合您的特定用例。


推荐阅读