我正在开发一个 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 作为我的后端的主要内容,如果未能解决你的问题,请参考以下文章