如何在Firebase托管中保护第三方API密钥?

时间:2019-07-17 07:04:24

标签: reactjs firebase google-cloud-firestore firebase-hosting

我在我的reactjs-firestore项目中使用了不同的第三方API密钥。但是我找不到在firebase托管中保护它们的方法。如何在Firebase托管中隐藏这些API密钥?

例如,在Netlify托管服务中,它们提供了环境变量功能,可用于保护API密钥。

也就是说,我可以将API密钥存储在netlify中的变量中,然后从那里检索它并将其保护。

但是在Firebase中,我该怎么做?

我似乎找不到类似的设置,其中可以将密钥作为环境变量存储在托管服务中。

如果没有此类功能,是否还有另一种方法来保护这些API密钥?

,对于firebase API密钥, 我已经阅读了一些答案,并了解不会隐藏firebase API密钥。

至少有某种方式可以将这些Firebase API密钥至少保护到一个安全的URL吗? (我知道编写安全规则是最好的方法,但是我也在尝试寻找其他选择)。

我似乎找不到一种将Firebase项目API密钥使用保护到一个受保护的URL的方法。

我试图找到保护API密钥的方法,但没有成功。

下面是我如何在reactjs代码中检索数据


axios.post(`https://data.retrieval.com/1/data?key=API_KEY`,  data)

我试图在生产代码中隐藏API_KEY

我想在托管网站上保护第三方API密钥。 并将我的Firebase项目API密钥限制为仅一个安全URL。 现在无法执行此操作。 有什么建议或解决方案吗?

谢谢您的帮助。 并感谢您的宝贵时间

2 个答案:

答案 0 :(得分:3)

如果您在客户端代码中使用API​​密钥,则恶意用户总是有机会找到并滥用密钥。防止这种情况的唯一方法是,不要在客户端代码中使用API​​密钥,或者拥有一个可以保护基于其他内容(例如Firebase's server-side security rules)的访问的后端系统。

由于您的后端系统可能没有这种安全模型,因此通常必须将其API包装在自己的中间件中,该中间件托管在受信任的环境中,例如您控制的服务器或Cloud Functions。这样一来,您就可以确保对API的所有访问均得到授权,例如,通过设置自己的安全系统。

答案 1 :(得分:2)

不确定是否有此帮助,但是我的Firebase Cloud Function使用this

  1. 通过以下方式创建您的秘密

firebase functions:config:set secret.API_KEY="THE API KEY"

  1. 使用functions.config().secret.API_KEY
  2. 访问您的秘密

注意:这仅应用于服务器用例,而不能用于客户端代码。对于服务器,我指的是Firebase Cloud Function或您的后端。