我在我的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。 现在无法执行此操作。 有什么建议或解决方案吗?
谢谢您的帮助。 并感谢您的宝贵时间
答案 0 :(得分:3)
如果您在客户端代码中使用API密钥,则恶意用户总是有机会找到并滥用密钥。防止这种情况的唯一方法是,不要在客户端代码中使用API密钥,或者拥有一个可以保护基于其他内容(例如Firebase's server-side security rules)的访问的后端系统。
由于您的后端系统可能没有这种安全模型,因此通常必须将其API包装在自己的中间件中,该中间件托管在受信任的环境中,例如您控制的服务器或Cloud Functions。这样一来,您就可以确保对API的所有访问均得到授权,例如,通过设置自己的安全系统。
答案 1 :(得分:2)
不确定是否有此帮助,但是我的Firebase Cloud Function使用this。
firebase functions:config:set secret.API_KEY="THE API KEY"
functions.config().secret.API_KEY
注意:这仅应用于服务器用例,而不能用于客户端代码。对于服务器,我指的是Firebase Cloud Function或您的后端。