2

服务器密钥保留在代码中,因此如果有人最终反编译源代码,即使我相信使用 proguard,他们也可以看到密钥。我怎样才能让 proguard 混淆这个或至少优化混淆。

4

2 回答 2

1

我怎样才能让proguard混淆这个

你不能。DexGuard 是 ProGuard 的商业分支,具有一些混淆数据的能力,但它不太可能像您自己的任何本土解决方案一样特别有用。攻击者所需要做的就是获取您的 APK,将您的 GCMIntentService 的超类替换为他们自己的,并记录该值。

有人可以向所有订阅者推送通知

如果您有证据表明这是可能的,请联系 security@android.com。由于项目 ID 不参与发送通知,因此我看不到您的攻击将如何工作,但也许我遗漏了一些东西。

于 2013-01-19T19:59:05.950 回答
0

你在这里没有问题。有两个“密钥”,senderId(属于 Android 代码)和您的 API 密钥。App 中的 senderId 仅说明 APP 将允许从哪个服务器接收消息。没有人可以利用它来发送消息。API 密钥应保密。这是在服务器中用于在 GCM 服务器上识别的密钥。在任何情况下,此键都不应该在您的应用程序的源代码中。因此,我建议您仔细阅读 GCM 指南以了解完整的关系。

于 2013-01-19T23:07:46.900 回答