Android:在我的Java代码中放置一个敏感的string是否安全?

我的应用程序使用了许多API密钥和URL,我不能让用户看到。 我一直把它们直接放在代码中,有时embedded在使用它们的方法中,有时在一个名为MyVals的类中存储常用的string和数字。

例如:

public class MyVals { private LGVals(){} public static final String DB_URL = "https://mydb.dbprovider.org/"; public static final String DB_Key = "klJF*(oh8iyhkkde"; public static final String TableKey_UserList = "o9w6owifhayf98fnwihj"; } 

这安全吗? 如果我正在使用Proguard创buildAPK,它会有所作为吗? 最佳做法是什么?

Solutions Collecting From Web of "Android:在我的Java代码中放置一个敏感的string是否安全?"

将敏感stringembedded代码是绝对不安全的。 Proguard混淆了类和方法名称,但是任何定义的string保持完全不变。 以下是我通过Proguard运行的应用程序的一个示例。 您可以看到方法和类名称被混淆,但string(因为它们必须是)不变。

这是原始代码:

 public void shutdown() { if (logger.logDebug()) { logger.logDebug(LOGTAG, "Queuing shutdown message ..."); } queueMessage(new BaseMessage(true)); } 

而由JD-GUI轻易获得的混淆代码:

  public void c() { if (c.logDebug()) c.logDebug("MsgRouter", "Queuing shutdown message ..."); a(new a(true)); } 

如果您在应用程序中将敏感数据embedded到string中, 则可以并将其反编译

不,这不安全。

您至less应该将信息放入SharedPreferences中。

但是,任何有root权限的人都可以阅读。