在javascript中保护Firebase机密
我已经用纯javascript创建了简单的firebase聊天系统,一切都很好,但我有下面的javascript代码供大家使用在javascript中保护Firebase机密,javascript,firebase,Javascript,Firebase,我已经用纯javascript创建了简单的firebase聊天系统,一切都很好,但我有下面的javascript代码供大家使用 var config = { apiKey: "AIzaSyD0Bm91234567678srKwjUGrpu35dgIIE", authDomain: "example-26847.firebaseapp.com", databaseURL: "https://example-26847.firebaseio.com", proje
var config = {
apiKey: "AIzaSyD0Bm91234567678srKwjUGrpu35dgIIE",
authDomain: "example-26847.firebaseapp.com",
databaseURL: "https://example-26847.firebaseio.com",
projectId: "example-26847",
storageBucket: "example-26847.appspot.com",
messagingSenderId: "937123954572"
};
但我觉得这很容易受到黑客攻击,我如何保护它,我只有php web服务器。好吧,简单的答案是将API密钥存储在php服务器上的环境变量中。您可以使用$\u服务器和$\u ENV数组访问这些变量 参考: 使用php.ini文件并将API密钥变量添加到php.ini文件中,或者如果您无权访问php.ini文件,则使用user.ini文件 此外,存储API密钥也是一种风险,特别是如果您将代码存储在Github或类似的代码存储库中 参考: 参考: 可以使用getenv()检索API键变量。 参考:
您可以更进一步,从google firebase控制台将此API密钥的使用限制为您的域名。您没有太多选择 通过JS访问它 实际上,在基于javascript的应用程序中需要这些键,所以它们会以某种方式出现在应用程序中。我认为这不会带来太大风险,您仍然可以添加一些规则,仅允许基于您将生成的APIKEY/令牌对firestore进行读/写访问。
另一种解决方案是通过ajax/XHR请求从服务器获取这些id,并将它们本地存储在基于浏览器的私有存储中 风投 在本地保留这些ID而不提交给VCS很容易(.gitignore,例如使用
。示例)
此外,您不需要所有这些文件,storageBucket
仅用于将文件存储在GCP存储中,messagingSenderId
用于推送通知 您好,即使您已保存在$_服务器中,我也必须将$_服务器回显到网页中,用户将可以看到它。如果我错了,请纠正我,是否仍然需要在php中进行身份验证,只需回显令牌或其他什么。并连接到js。不,只要您使用https模式,这里就不应该存在安全问题。使用getenv检索变量。事实上,以您所使用的方式存储变量是一种安全风险。我一直在firebase工作,这是推荐的方法。