3

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

他们的示例代码使用一个.properties文件来存储 API 密钥和秘密。我发现这非常令人震惊,因为这些文件在扩展 APK 后很容易访问。

我不打算就在您的应用中存储敏感数据展开辩论。我只是想知道这样存储密钥是否不可接受。

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

4

3 回答 3

2

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

于 2013-03-12T12:39:32.010 回答
0

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

也看看像dexguard这样的工具。它提供了比 proguard 更多的混淆和安全功能。

于 2013-03-12T12:50:43.693 回答
0

关于城市飞艇;您放置在 .properties 文件中的密钥和秘密本质上是用于分析调用,而不是实际的“推送”。不过,您也获得了 API 调用的主密钥。这是您需要保护的应用程序机密值。这就是为什么 Urban Airship 不鼓励从需要应用程序密钥和主密钥的设备推送。如果您只存储 Urban Airship 的应用程序密钥和机密,则不存在安全问题。

于 2013-11-05T01:01:13.510 回答