javascript - Firebase 函数和 API key

标签 javascript reactjs firebase google-cloud-functions

Firebase 函数是存储 React 应用 API key 的安全位置吗?作为示例,请参阅以下 Firebase 云函数中的 axios API 调用模板:

cloud function template

编辑:添加文本代码片段。考虑到它是一个 Firebase 云函数,将 API key 直接存储在此代码段中是否安全的问题。

exports.getAlphaData = functions.https.onRequest((request, response) => {    

    const fetchAlphaData = async () => {        

        // Axios Call
        const result = await axios(
            'https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol=SPY&XXXXXX',
        );

        // Expressjs Respond        
        response.send(result.data);

    };

    fetchAlphaData();

});

如果这个函数是在 React 应用程序中定义的,它将暴露我的 API key 。 React 官方文档和其他来源表示,切勿将 .env 文件用于敏感数据,因此我也为 key 保留了该方法。原始 API key 实际驻留在全栈应用程序中的最佳位置是哪里?

最佳答案

Firebase 可以使用 Google Cloud Platform 服务,您可以集成 GCP Secret Manager在使用此服务的功能上,您可以存储原始 key (这些将被加密)并通过您的代码功能检索,这带来的好处是您可以通过 Cloud IAM 限制访问和服务帐户。

这可以帮助您定义项目的哪些成员或哪些服务帐户可以访问 API key ( secret )

可以配置 secret 的权限,这样即使开发人员也无法看到生产环境 key ,assigning access permissions到 secret ,但允许该函数可以获取该 secret (因为与您的函数关联的服务帐户可以读取该 secret )。

在本文档中,您可以找到 code example关于如何使用 GCP Secret Manager

关于javascript - Firebase 函数和 API key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65127952/

相关文章:

JavaScript JQuery 为什么按钮的 ID 没有被正确引用

javascript - 更新 React State 中的嵌套值

javascript - 如何为 firebase admin 实时数据库编写批量事务?

objective-c - 无法在 AppController 中导入 firebase

javascript - 尝试读取 csv 数据时未捕获语法错误

javascript - 更改服务器在 kendo ui 网格中以编程方式排序

javascript - 我的 d3 折线图中的画笔功能未按预期工作

ios - 应用程序在前台时未触发通知-iOS

javascript - 带有 Javascript 的 WebView 不断重新加载

javascript - useTransition - 对象不是函数或其返回值不可迭代