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

Har*_*rry 6 firebase reactjs firebase-hosting google-cloud-firestore

我在 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)

Run Code Online (Sandbox Code Playgroud)

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

我想保护托管网站中的第三方 API 密钥。并将我的 firebase 项目 API 密钥限制为仅一个安全 URL。我现在无法做到这一点。任何建议或解决方案?

感谢您尝试提供帮助。谢谢你的时间

Fra*_*len 6

如果您在客户端代码中使用 API 密钥,恶意用户总是有可能找到该密钥并滥用它。防止这种情况的唯一方法是不在客户端代码中使用 API 密钥,或者拥有一个后端系统可以保护基于其他内容的访问(例如Firebase 的服务器端安全规则)。

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


Lie*_* Le 5

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

  1. 创建你的秘密

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

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

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