我正在开发一个 Android 应用程序并使用 Firebase 作为我的后端

Posted

技术标签:

【中文标题】我正在开发一个 Android 应用程序并使用 Firebase 作为我的后端【英文标题】:I'm Developing an Android app and using Firebase as my Backend 【发布时间】:2017-07-31 10:11:58 【问题描述】:

通过使用 Firebase,我的所有逻辑都将在客户端应用程序中。 因此,如果有人通过对 android 应用程序进行逆向工程获得了我的源代码,那么他/她可以轻松更改 Firebase 引用(节点名称)并可以更改其他用户的内容,这根本不是一件好事。

我的应用程序使用电话身份验证来验证用户。但是黑客可以更改引用,然后使用他的电话号码验证自己,然后他就可以更改其他人的帐户了。

那么如何预防呢?

【问题讨论】:

您是否将敏感数据保存在应用程序中? 我在说参考文献。。任何有我的代码的人都可以更改节点名称,然后他可以编辑该节点 我对 Firebase 不熟悉 - 但可能会将这些 节点名称 保存在具有身份验证会话的服务器上 firebaser here 正如 Thomas 的回答:使用 Firebase 的服务器端安全规则来控制用户可以访问的内容。每个用户都在其中用UID 标识,不能被黑客入侵(除非用户共享他们的凭据,或者您泄露了项目的服务器凭据)。 谢谢托马斯。你能告诉我如何使用它们的规则吗? 【参考方案1】:

如果我理解正确,您使用的是 firebase 数据库。您应该阅读firebase security rules 的工作原理。如果用户通过Firebase auth's methods 之一进行身份验证(您提到了电话身份验证),则可以让用户仅访问和修改他自己的数据。由于您没有提供示例代码,我无法给您具体用法,但您可以在firebase docs about "Securing user data"中找到很多示例。

如果您这样做,“黑客”会做什么并不重要,因为他需要先使用另一个用户的号码进行身份验证。 (=不可能)

【讨论】:

【参考方案2】:

只需使用Progaurd 来混淆您的代码。您可以在this 链接上找到更多信息

【讨论】:

1) Proguard 只是混淆了你的代码。有足够的时间,它可以恢复。 2) 如果正确使用 Firebase 规则,恶意方不可能修改他人的 Firebase 数据。它与混淆代码无关

以上是关于我正在开发一个 Android 应用程序并使用 Firebase 作为我的后端的主要内容,如果未能解决你的问题,请参考以下文章

Android:开发聊天应用程序

Android中的倾斜矩阵

Android使用Firebase

Android开发 - 通过3G缓慢的互联网连接

我的 Android 应用程序正在耗尽电池电量吗?

为 iOS/Android 应用程序保护基于 REST 的服务的选项