Firebase 客户端 JS SDK - 在哪里保存私钥?

时间:2021-05-17 10:07:25

标签: javascript reactjs firebase react-native

直到现在,我都将我的 Firebase 项目私钥保存在我的 React Native 应用程序的 app.json 中。像这样:

"web": {
  "config": {
    "firebase": {
      "apiKey": "x",
      "authDomain": "x.firebaseapp.com",
      "databaseUrl": "https://x.firebaseio.com",
      "projectId": "x",
      "storageBucket": "x.appspot.com",
      "messagingSenderId": "x",
      ...
    }
  }
},

但是看着 docs,我看到了以下内容:

<块引用>

警告:不要将任何秘密(例如私有 API 密钥)存储在您的 反应应用!

环境变量被嵌入到构建中,这意味着任何人都可以 通过检查您应用的文件来查看它们。

那么,如果我不应该在前端存储机密,我该如何使用 Firebase 客户端 sdk?

1 个答案:

答案 0 :(得分:2)

来自配置的 API 密钥不是秘密密钥,它是一个 public key,用作标识符和加密过程的一部分 - 因此不需要保护。

如果您要创建一个新的或使用现有的 service account 并具有对后端基础架构的潜在关键访问权限,则该帐户的私钥不应包含在您的前端代码中。

相反,您可以创建一个 firebase cloud function,您可以在其中使用机密而不将其暴露给外界。