我已经使用纯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服务器。
答案 0 :(得分:1)
您没有太多选择。
您实际上在基于JavaScript的应用中需要这些键,因此它们会以一种或另一种方式使用。我认为这样做不会带来太大的风险,您仍然可以添加一些规则,以仅允许基于将生成的apikey /令牌对firestore进行读/写访问。
另一个解决方案是通过ajax / XHR请求从您的服务器获取这些ID,并将其本地存储在一些基于私有浏览器的存储中。
在不提交给VCS的情况下将这些ID保留在本地很容易(例如,使用.example
使用.gitignore)
此外,您不需要所有它们,storageBucket
仅用于在GCP存储中存储文件,messagingSenderId
用于推送通知。
答案 1 :(得分:0)
好吧,简单的答案是将API密钥简单地存储在PHP服务器上的环境变量中。您可以使用$ _SERVER和$ _ENV数组访问这些变量。
参考:http://php.net/manual/en/reserved.variables.environment.php
如果您无权访问php.ini文件,请使用php.ini文件并将API密钥变量添加到php.ini文件中,或使用user.ini文件。
除了存储API密钥外,还有风险,尤其是当您将代码存储在Github或类似的代码存储库中时。
参考:http://php.net/manual/en/configuration.file.per-user.php
参考:http://php.net/manual/en/configuration.file.php
您可以使用getenv()检索API密钥变量。 参考:GetEnv
您可以更进一步,并通过google firebase控制台将此API密钥的使用限制为您的域名。