在火力web应用指南规定我应该把给定的apiKey在我的HTML火力点初始化:
// TODO: Replace with your project's customized code snippet
<script src="https://www.gstatic.com/firebasejs/3.0.2/firebase.js"></script>
<script>
// Initialize Firebase
var config = {
apiKey: '<your-api-key>',
authDomain: '<your-auth-domain>',
databaseURL: '<your-database-url>',
storageBucket: '<your-storage-bucket>'
};
firebase.initializeApp(config);
</script>
这样,apiKey便暴露给每个访问者。该密钥的目的是什么,真的意味着要公开吗?
我不相信将安全性/配置密钥公开给客户端。我不会说它是安全的,不是因为有人可以从第一天起就窃取所有私人信息,因为有人会提出过多请求,耗尽您的配额,并使您欠Google很多钱。
您需要考虑许多概念,包括限制人们不要访问不应在的地方,DOS攻击等。
我更希望客户端首先连接到您的Web服务器,在那里您将第一手防火墙,验证码,cloudflare,自定义安全性放在客户端和服务器之间,或者服务器和firebase之间,您就可以使用了。至少您可以先停止可疑活动,直到其到达火力基地。您将拥有更大的灵活性。
我只看到一种很好的使用场景,可以将基于客户端的配置用于内部使用。例如,您具有内部域,并且您可以肯定外部人员无法访问该域,因此可以设置浏览器-> firebase类型之类的环境。