如何处理 google firebase web app 的安全性?

Posted

技术标签:

【中文标题】如何处理 google firebase web app 的安全性?【英文标题】:How to handle google firebase web app security? 【发布时间】:2020-07-23 15:20:01 【问题描述】:

如果我将 Firebase 和 Firestore 与 Angular 网络应用程序一起使用,我如何限制对 Firebase 资源的访问,以便无法从我的 Angular 应用程序外部访问它们?

主要漏洞似乎是我的 Firebase 配置暴露在 Angular 代码中。我想消除恶意开发人员获取此配置并开发一些机器人或黑客应用程序的能力。

【问题讨论】:

嗯,Firebase 将需要该配置,它几乎只包含有关您的应用程序的详细信息,但本身并不是漏洞。可能你应该看看这个问题的接受答案***.com/questions/37482366/… 感谢您的回复。我已经阅读了这个问题并且很多人都喜欢它,但似乎我强调的漏洞被忽略了。当然,我可以要求用户在与我的 Firebase 资源交互之前进行身份验证。但如果我正在创建一个公共社交网络,任何人都可以创建一个帐户,并且每个人都可以访问我的 Firebase 配置。是什么阻止了某人在他们自己的应用程序中使用我的配置,使用他们通过我的应用程序创建的帐户进行身份验证,然后随意写入或读取我的数据库? 【参考方案1】:

您可能希望在两者之间创建一种层(例如 REST API),其中配置仅存储在您的服务器上。因此,客户端将只能访问该 REST API,因此没有机会查看配置中的内容!


文档指出,Firebase 有许多针对多种语言的绑定,例如:

Java/Kotlin Swift/Obj-C C++ javascript

更多详情,请查看here。


另外,我认为我想出的这个 REST 层似乎并不尴尬或不常见,因为官方文档上有一篇非常好的文章 here。


总之,最好的办法是真正构建自己的 REST API。您很可能仍会在您的服务器上收到 Firebase 的通知,如果 e. G。但是,发生了一个事件,通知客户端将不再由 Firebase 完成,而是由您的服务器完成(例如,这可以使用 WebSockets 来实现)。

这些只是想法,所以我不太确定。也许 Firebase 仍然可以通知您的客户,而您不需要任何 WebSocket。

在框架方面,您有很多选择。唯一真正重要的是,框架的核心语言确实是许多 Firebase 实现(Java、JS、Kotlin、C++、Swift...)的支持语言。

我建议你看看下面的标准和框架,然后选择你最喜欢的一个:

Node.js/Express.js Spring Boot(或 Spring MVC,如果您不使用自动配置) JAX-RS(JavaEE 标准)

编辑:但是

我认为构建一个 REST API 只是为了克服可能的安全问题似乎做任何事情两次(创建 REST 资源,只是为了调用另一个 Google API)。我不想反对 Firebase,因为事件驱动的架构非常热门,但如果您正在构建 API,那么可能创建自己的数据库实例 (NoSQL for your case of a social network seems more appropriate) 会更合理一些。但同样,我只是分享我的想法:)

【讨论】:

以上是关于如何处理 google firebase web app 的安全性?的主要内容,如果未能解决你的问题,请参考以下文章

Firebase Auth UI 如何处理重新身份验证?

如何处理 FirebaseAuthUserCollisionException

Firebase云功能:如何处理持续请求

Firebase 如何处理离线时执行的事件?

登录时如何处理状态(Ionic、Firebase、AngularJS)?

如何处理 Firebase Cloud Functions 中的错误 JSON?