2

服務器密鑰保留在代碼中,因此如果有人最終反編譯源代碼,他們甚至可以看到密鑰,即使我相信有proguard。我如何得到proguard混淆這個或至少優化混淆。如何爲Android推送通知混淆GCM密鑰

+0

「服務器密鑰保留在代碼中」 - 該代碼位於服務器上。這就是爲什麼他們稱之爲「服務器密鑰」。 「所以如果有人反編譯源碼,他們甚至可以看到密鑰,即使我使用了proguard」 - 他們將如何將源代碼發送到服務器應用程序? – CommonsWare

+0

嗨,我參考谷歌項目Id: – j2emanue

+0

公共類GCMIntentService擴展GCMBaseIntentService {公共GCMIntentService(){ 超級(「my_project_ID_goes here」); } ...... ..... .... – j2emanue

回答

0

您在這裏沒有問題。有兩個「鍵」,即senderId(屬於Android代碼)和您的API密鑰。 應用程序中的senderId僅指明應用程序允許接收消息的服務器。有人可以利用這個來發送消息。 API密鑰應該保密。這是服務器用於在GCM服務器上識別的關鍵。這個鍵不應該在你的應用程序的源代碼中。 所以我建議你仔細重新閱讀GCM指南以瞭解完整的關係。

+0

你的權利,我有一個腦屁。我將GOOGLE_API_KEY與發件人鍵混合在一起.... GOOGLE_API_KEY我已將其安全地保存在我的服務器上。這是被接受的答案。 – j2emanue

1

我怎樣才能獲得的ProGuard混淆這

你不能。 DeGuard是ProGuard的商業分支,它有一些混淆數據的能力,但它不太可能特別有用,就像你自己的任何自制解決方案一樣。攻擊者需要做的就是獲取APK,用自己的GCMIntentService的超類替換它們,並記錄該值。

有人可以推送通知給所有用戶

如果你有證據證明這是可能的,請聯繫[email protected]。由於項目ID沒有涉及發送通知,我沒有看到你的攻擊會如何工作,但也許我錯過了一些東西。