我开发了一个可直接与MongoDB交互以插入和获取数据的android应用。
我在应用程序中读取的android应用程序的配置文件中存储了凭据。
mongoDBConnection:
credentials:
username: "test"
password: "test"
database: "admin"
connectionString: "mongodb://localhost:27017"
[该应用程序在手机上安装时按预期工作,我担心的是,如果我交付该应用程序,那么有人可以反编译该应用程序并取回凭据吗?
为了解决此问题,Android应用程序可以与后端进行交互,该后端会将请求路由到mongoDB,并且monogo凭据存储在该后端中。
我想在实现后端之前获取输入,以了解是否需要后端,或者android应用程序本身是否可以通过任何方式存储凭据,以便在反编译时不暴露凭据?
如果我发布了该应用程序,谁能反编译该应用程序并取回凭据?
是
Android应用程序本身有什么方法可以存储凭据,以便在反编译时不会暴露凭据?
不,这是不可能的。您可以对其进行混淆以使其变得更难,但是如果应用程序具有它们,则无法阻止足够熟练/确定的攻击者来检索它们。
为了解决此问题,Android应用程序可以与后端进行交互,该后端会将请求路由到mongoDB,并且monogo凭据存储在该后端中。
这是执行此操作的唯一方法,也是正确的解决方案。
如果我发布了该应用,则任何人都可以反编译该应用并检索凭证回来了?
技术上是。但是,如果您使用proguard,那么有人很难弄清楚您的数据库凭据。这可以是您的第一道防线
Android应用程序本身可以通过任何方式存储凭据,例如反编译时不会暴露出来?
是。使用密钥库。遵循此article