Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中保护Firebase机密_Javascript_Firebase - Fatal编程技术网

在javascript中保护Firebase机密

在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

我已经用纯javascript创建了简单的firebase聊天系统,一切都很好,但我有下面的javascript代码供大家使用

  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工作,这是推荐的方法。