我需要在Android应用程序中存储一些敏感信息。如果我把它放在一个资源文件中,看起来另一个应用程序只需使用PackageManager.getResourcesForApplication()即可浏览和读取该文件是微不足道的。
正确放置此类信息的地方在哪里,我们不希望人们能够轻松窥探?
它应该在编译的java文件中吗?或者类文件也易于阅读?此外,如果它们在java文件中,是否可以从需要它们的XML文件中引用它们(例如,用于google maps api密钥)?
答案 0 :(得分:9)
无论如何,您的APK将从设备中检索并撕裂。 (毕竟,有些设备已植根。)无论你在哪里硬编码,无论在哪里,都会被发现并提取出来。当然,如果潜在的收益能够证实这一努力。否则,隐匿性的安全性,例如模糊处理,可能是最佳选择。
处理真实的秘密应该基于某种输入,特别是密码。
令人高兴的是,如果按原样使用API密钥,则不一定是真正的秘密。
答案 1 :(得分:4)
Google在billing下提出了一些很好的建议。总结一下:使用远程服务器,混淆并使用安全的随机nonce。你的apk中没有什么是安全的,因为它总是可以进行逆向工程,而混淆只能对抗简单的攻击。</ p>
答案 2 :(得分:-3)
如果您只想拒绝从其他应用程序访问您的数据,您可以使用SharedPreferences。只是用 Contex.getSharedPreferences(/ prefs文件名 /,Context.MODE_PRIVATE); 根据文档,MODE_PRIVATE表示创建的文件只能由调用应用程序(或共享相同用户ID的所有应用程序)访问。