node.js - 如何从我的 nodejs 后端检索 firebase api 密钥?
问题描述
我正在构建一个将使用 Firebase Auth 的 React 应用程序。我将我的 API 密钥存储在 .env 文件中,但我在 React 文档中读到它不安全,所以我在我的 NodeJS 服务器上创建了一个自定义和私有路由,这是一个简单的GET
请求,它向我发送数据我需要(钥匙、投影仪等)。我认为这是最安全的方法,对吧?
现在我正在尝试从我的后端获取这些数据,并且我可以使用console.log
例如,但我无法将它与 Firebase 功能集成。它一直说它是未定义的。
这是我到目前为止所尝试的:
import * as firebase from 'firebase/app';
import 'firebase/auth';
const API_URL = process.env.REACT_APP_API_URL;
let res;
export async function getFirebaseKeys() {
const response = await fetch(`${API_URL}/api/get`);
res = response.json();
}
getFirebaseKeys();
//I have also tried to use firebase.OnLog but no success.
//I have also tried to wrap firebase.initializeApp and my fetch in a function but it breaks
const app = firebase.initializeApp({
apiKey: res.apiKey,
authDomain: res.domain,
databaseURL: res.database,
projectId: res.projectId,
storageBucket: res.storageBucket,
messagingSenderId: res.senderId,
});
export default app;
这是我第一个使用 Firebase 和 React 的项目,所以如果我遗漏了一些明显的东西,我很抱歉。
解决方案
您现在尝试做的实际上并不比将 Firebase 配置放入源(它打算去的地方)更安全。将它隐藏在 GET 后面只会让人们通过另一个步骤来获得它,如果他们想要的话。
只要您还使用 Firebase 身份验证登录用户,并使用安全规则来确定谁可以访问项目中的哪些数据,将 Firebase 配置交给公众并没有什么不安全的。
做任何最方便的事——安全不是这里的问题。
推荐阅读
- django - Django APIView中必填字段的错误
- java - Trie 结构中的“charAt(i) - 'a'” 是什么意思?
- azure-application-insights - Azure 日志分析或应用程序见解中的首次错误
- lotus-domino - 计算剩余天数的两个日期/时间字段之间的差异 - Lotus Notes
- python - 如何找出给定的内置张量流函数接受哪些 dtype 张量?
- javascript - 我可以就我的 Youtube-dl npm 项目中出现的这个错误寻求帮助吗
- python - 无法使用 scrapy 从 Reddit 嵌入式提要窗口获取“href”
- javascript - 获取最小值的键
- reactjs - 如何在表格中进行搜索?
- javascript - 如何创建会话并让用户稍后填写数据