如果有人想通过获取apk文件然后对其进行自定义以进行其他我不应该做的事情来对我的android应用程序进行反向工程。请记住,当我们创建用于链接android应用的firebase项目时,apk文件将包含我们从firebase下载的google-services.json
文件。
问题是:
即使实时数据库或Firebase存储上存在仅允许经过身份验证的用户的安全规则。然后,黑客可以对该应用程序进行反向工程,并制作自己的具有相同google-services.json
文件的应用程序,然后在编译时,该黑客可以创建一个帐户并登录到该应用程序(这使他获得了身份验证),然后也许他可以删除并将数据写入实时数据库。
有人可以解释一下证券的持有方式吗?
答案 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发送到您的项目。
再说一次,我是通过了解和检查我拥有的项目来回答我对它的理解,这不是官方的答案,所以请使用镊子。