在.properties文件中存储密钥是否是一种不好的做法?

3

我刚刚在Android上与UrbanAirship集成了。

他们的示例代码使用.properties文件来存储API密钥和密钥。我觉得这相当令人担忧,因为扩展APK后这些文件很容易被访问。

我不想开启关于在应用程序中存储敏感数据的辩论。我只想知道是否存储类似这样的密钥是不可接受的。

如果是的话,哪种方法更安全但直截了当?我目前将自己的API密钥存储为全局文件中的静态变量。

3个回答

2

由于APK内容未加密,因此字符串可以从.properties文件中提取,也可以从已编译的类中提取。您可以通过将其加密存储在Globals类中来使其更难以提取,但不要期望您向用户发布的任何内容都能保持机密。


0
如果您需要一种安全的方式将密钥加载到内存中,请通过安全通道在运行时从自己的服务器请求它们。即使您将密钥存储在仅可从程序访问的共享首选项/数据库中,但已经获取了root权限的设备可以绕过该限制,因为它可以访问所有文件。类/ Dex文件随时可以进行反向工程。此外,还可以查看dexguard等工具。它提供比proguard更多的混淆和安全功能。

0
关于Urban Airship;您在.properties文件中放置的密钥和秘钥实际上是用于分析调用而不是实际的“推送”。您还会得到一个API调用的主秘钥。这是您需要保护的应用程序秘钥值。这就是为什么Urban Airship不鼓励从需要应用程序密钥和主秘钥的设备进行推送的原因。如果您只存储Urban Airship的应用程序密钥和秘钥,则没有安全问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接