将密钥存储在.properties文件中是不好的做法

时间:2013-03-12 12:10:59

标签: android security

所以我刚刚与UrbanAirship for Android集成。

他们的示例代码使用.properties文件来存储API密钥和机密。我发现这非常令人担忧,因为在扩展APK后可以轻松访问这些文件。

我不打算开始讨论如何在您的应用中存储敏感数据。我只是想知道存储这样的密钥是不可接受的。

如果是,那么这是一种更安全但更直接的方法?我目前将自己的API密钥存储为全局文件中的静态变量。

3 个答案:

答案 0 :(得分:2)

由于APK内容未加密,因此从.properties文件中提取的字符串与从编译的类中提取的字符串一样容易。你可以通过将它加密存储在Globals类中来提取它,但不要指望你发送给用户保留任何秘密。

答案 1 :(得分:0)

如果您需要一种安全的方法将密钥加载到内存中,请在运行时通过安全通道从您自己的服务器请求它们。即使您将密钥存储在只能从您的程序访问的共享首选项/数据库中,根设备也可以解决这个问题,因为它可以访问所有文件。 Class / Dex文件可以随时进行逆向工程。

另请参阅dexguard等工具。它提供了比proguard更多的混淆,安全功能。

答案 2 :(得分:0)

关于Urban Airship;您放在.properties文件中的密钥和秘密主要用于分析调用,而不是实际的“推送”。尽管如此,您还可以获得主密钥以进行API调用。这是您需要保护的应用程序密钥值。这就是为什么Urban Airship不鼓励推出需要app密钥和主密钥的设备。如果您只存储Urban Airship的app密钥和秘密,则不存在安全问题。