- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Firebase Web-App guide声明我应该将给定的 apiKey
放入我的 Html 中以初始化 Firebase:
// 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
就会暴露给每个访问者。
该 key 的用途是什么?它真的要公开吗?
最佳答案
apiKey
在此配置片段中,仅标识您在 Google 服务器上的 Firebase 项目。别人知道它不会带来安全风险。事实上,他们有必要知道它,以便他们与您的 Firebase 项目进行交互。同样的配置数据也包含在每个使用 Firebase 作为后端的 iOS 和 Android 应用程序中。
从这个意义上说,它与同一代码段中标识与您的项目关联的后端数据库的数据库 URL 非常相似:https://<app-id>.firebaseio.com
.请参阅此问题,了解为什么这不是安全风险:How to restrict Firebase data modification? ,包括使用 Firebase 的服务器端安全规则来确保只有授权用户才能访问后端服务。
如果您想了解如何确保对 Firebase 后端服务的所有数据访问都获得授权,请阅读 Firebase security rules 上的文档.这些规则控制对文件存储和数据库的访问,并在 Firebase 服务器上强制执行。因此,无论是您的代码,还是使用您的配置数据的其他人的代码,它都只能执行安全规则允许它执行的操作。
有关 Firebase 使用这些值的目的的另一种解释,以及您可以为其中的哪些值设置配额,请参阅 using and managing API keys 上的 Firebase 文档。 .
如果您想降低将此配置数据提交给版本控制的风险,请考虑使用 SDK auto-configuration of Firebase Hosting .虽然 key 最终仍会以相同的格式出现在浏览器中,但它们不会再被硬编码到您的代码中。
更新(2021 年 5 月):感谢名为 Firebase App Check 的新功能,现在实际上可以将对 Firebase 项目中后端服务的访问限制为仅来自在该特定项目中注册的 iOS、Android 和 Web 应用程序的访问。
您通常希望将此与上述基于用户身份验证的安全性相结合,这样您就有了另一道屏障来防止确实使用您的应用的滥用用户。
通过将 App Check 与安全规则相结合,您既可以广泛防止滥用,又可以很好地控制每个用户可以访问哪些数据,同时仍然允许从您的客户端应用程序代码直接访问数据库。
关于javascript - 将 Firebase apiKey 公开给公众是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57998754/
我是一名优秀的程序员,十分优秀!