Firebase:可以通过反编译apk来访问我的数据和文件吗?

时间:2018-12-06 15:22:39

标签: android firebase

如果有人想通过获取apk文件然后对其进行自定义以进行其他我不应该做的事情来对我的android应用程序进行反向工程。请记住,当我们创建用于链接android应用的firebase项目时,apk文件将包含我们从firebase下载的google-services.json文件。

问题是:

即使实时数据库或Firebase存储上存在仅允许经过身份验证的用户的安全规则。然后,黑客可以对该应用程序进行反向工程,并制作自己的具有相同google-services.json文件的应用程序,然后在编译时,该黑客可以创建一个帐户并登录到该应用程序(这使他获得了身份验证),然后也许他可以删除并将数据写入实时数据库。

有人可以解释一下证券的持有方式吗?

2 个答案:

答案 0 :(得分:2)

通常,您应该假定您交付给客户的任何代码都可能受到损害。您应该假定运行它们的设备在其完全控制之下,并且他们可以更改代码在该设备上的执行方式。问题不仅仅在于您的应用反编译,还在于您根本无法以任何方式控制执行环境(除非您当然制造设备并内置了自己的硬件安全性)。

google-services.json中的数据不是私有数据。您应该假设发布应用程序的那一刻,每个人都会知道该文件中的所有信息。可以将数据视为唯一的标识符,告诉您的应用程序从何处获取数据。该文件中没有密码或凭据,攻击者无法执行您未授权他们执行的任何操作。

由您决定将安全规则与Firebase身份验证结合使用,以控制谁可以对Firebase中托管的数据进行处理。阻止人们在您的应用程序中创建随机帐户是不可能的,但是有可能限制他们的工作。

如果您发现自己的应用受到某种形式的滥用,则可以关闭滥用者的帐户,并联系Firebase支持以举报滥用行为。

答案 1 :(得分:1)

几个月前,我问自己同样的情况。

据我了解,当您生成项目(从Firebase控制台或Android Studio创建项目)时,会要求输入SHA-1密钥。

此SHA-1密钥是唯一的,可作为您项目中连接到Firebase服务的授权,例如,如果用户拥有您的google-services.json,则他们甚至都很难登录或登录。在没有允许他们使用您的项目的SHA-1密钥的情况下进行身份验证。

我也在检查google-services.json,其中有SHA1-1以及程序包名称。

 "android_info": {
            "package_name": "com.packagename.debug",
            "certificate_hash": "SHA1-KEY"
          }

如果您需要添加新的SHA-1,则还需要使用Gmail进行身份验证以转到Firebase控制台并自行添加(在这种情况下,黑客几乎不可能访问您的Gmail帐户),或者在Android Studio中执行相同操作并同步项目。

正如我之前说过的,这就是我对这种情况的理解,而且,很少有关于保护API密钥的研究表明,与应用程序中的公共APIS相比,您需要担心客户端API。

问题是,对您的APIS进行加密的客户端会公开加密代码,并且可以将其解码,这就是为什么有时最好从Firebase运行某种功能并将明智的APIS发送到您的项目。

再说一次,我是通过了解和检查我拥有的项目来回答我对它的理解,这不是官方的答案,所以请使用镊子。