在 Android 应用程序中存储 MongoDB 数据库凭据

Storing MongoDB database credentials inside Android app

我开发了一个 android 应用程序,它直接与 MongoDB 交互以插入和获取数据。

我在 android 应用程序的配置文件中存储了我在应用程序中读取的凭据。

mongoDBConnection:
  credentials:
    username: "test"
    password: "test"

  database: "admin"
  connectionString: "mongodb://localhost:27017"

当安装在 phone 上时,该应用程序按预期工作,我担心的是如果我发布该应用程序,任何人都可以反编译该应用程序并取回凭据吗?

为了解决这个问题,android 应用程序可以与后端交互,后端会将请求路由到 mongoDB 并且 monogo 凭据存储在该后端。

我想在实施后端之前了解是否需要后端,或者 android 应用程序本身是否有任何方法来存储凭据,以便在反编译时不会暴露?

if I ship the app can anyone decompile the app and retrieve the credentials back?

是的。

is there any way in android app itself to store the credentials such that it does not get exposed when decompiled?

不,这不可能。您可以混淆它们以使其更难,但如果应用程序有它们,则不可能阻止充分 skilled/determined 攻击者检索它们。

To solve the issue, the android app can interact with a backend which will route requests to mongoDB and monogo credential are stored in that backend.

这是唯一的方法,也是正确的解决方案。

if I ship the app can anyone decompile the app and retrieve the credentials back?

技术上是的。但是,如果您使用混淆器,那么别人就很难弄清楚您的数据库凭据。这可以是你的第一道防线

is there any way in android app itself to store the credentials such that it does not get exposed when decompiled?

是的。使用密钥库。 关注这个article