Firebase(客户端与服务器端)

Posted

技术标签:

【中文标题】Firebase(客户端与服务器端)【英文标题】:Firebase (client-side vs server-side) 【发布时间】:2019-03-18 12:27:59 【问题描述】:

我正在使用 django/python 在服务器端和 vue 在客户端构建 PWA,并且希望将 firebase 用作数据库并使用 firebase 身份验证。

经过深入研究后,我意识到我必须做出一些选择。

问题一:身份验证

我可以在客户端或服务器端进行身份验证。哪一个最好(更安全)?

问题 2:数据库

就 CRUDS 而言,我有点矛盾。我是否从客户端将所有数据写入 Firestore? 我是否更愿意使用 api 与我的后端通信,然后从后端将数据写入 Firestore?这样做有什么安全隐患?

我应该只根据上下文使用两者吗?如果没有安全隐患,我会在服务器端进行身份验证客户端和 CRUDS。我想我还必须检查身份验证才能从后端写入数据库。

【问题讨论】:

您的身份验证问题的答案如下。请为数据库问题创建一个单独的帖子,因为在 Stack Overflow 上建议将每个问题分成单独的帖子。我还建议在这个新问题中选择一个特定的用例。 Firestore 有客户端和服务器端 SDK 是有正当理由的。一些用例最好在客户端完成,其他用例在服务器中完成。如果有一个“最佳”方法,它只会为该方法提供一个 SDK。 好的,酷豆。谢谢伙计 - 我大约一周前才加入堆栈溢出,所以我真的不太适应形式。 我在 vue.js 和 firebase 上做过一门很棒的 Udemy 课程,可能很有用 udemy.com/build-web-apps-with-vuejs-firebase/learn/v4/content 这里一切都在客户端,几乎一切都在客户端 @WernerKotze 想知道,你有没有在另一篇文章中问过数据库问题?我有同样的问题..(编辑:没关系找到答案here) 【参考方案1】:

用户凭据的身份验证应始终在服务器上进行,因为它无法在客户端计算机上安全地完成。然而,Firebase 身份验证允许的是身份验证在 Google 的服务器上运行,而您可以通过简单的客户端 API 调用来控制它。

【讨论】:

我明白这一点 - 但据我所知,我可以使用 firebase admin SDK 在服务器端进行用户管理。哪个更好? Admin SDK 允许您创建用户帐户、删除用户帐户、更新他们的个人资料等。客户端 SDK 允许每个用户自己执行这些操作。您通常希望在客户端完成大部分可以在客户端完成的事情。

以上是关于Firebase(客户端与服务器端)的主要内容,如果未能解决你的问题,请参考以下文章

将 NodeJs 与 Firebase 一起使用 - 安全性

是否仍然可以在 Firebase 3 中对令牌进行服务器端验证?

客户端 React App 从服务器端生成的 Firestore 模拟器获取

如何在没有客户端身份验证的情况下从服务器验证 Firebase 用户?

为 Android 实现 Firebase 服务器端倒数计时器?

在没有服务器端代码的 Firebase 中搜索