幾天前,一個人反編譯我的應用程序,並在我的源代碼中顯示一個問題。我在應用程序的源代碼中硬編碼鏈接和我的服務器的密碼,我不知道通過反編譯任何人都可以看到我的源代碼。我使用proguard,但proguard不會混淆字符串。這讓我想知道如何做到這一點的正確方法?我的應用程序如何進行api調用,服務器可以對其進行身份驗證?我做了一項研究,但沒有看到有關這方面的內容。我的應用不管理用戶和密碼。我存儲在我的代碼中的用戶和密碼是要在服務器中登錄的用戶和密碼。Android服務器通信安全
0
A
回答
0
是的,很容易看到反編譯的Java代碼來獲取密鑰等。
有幾件事情要做:
確保「應用程序鍵」或「標記」不深管理員權限祕密。許多SaaS/API提供商爲您提供多個密鑰。一種是客戶端密鑰在可執行的特權/操作中受到限制,另一種是具有更多特權但不會通過客戶端代碼泄漏出去的服務器密鑰。在你的情況下,你不應該共享相同的服務器登錄/管理密碼。槓桿原理最小特權(https://en.wikipedia.org/wiki/Principle_of_least_privilege)
確保字符串是一個靜態的最終。在這種情況下,編譯器和Proguard允許字符串內聯。這使得知道該字符串的用途有點困難。如果你有一個單獨的「Config」類,那麼在facebookAppId,'secret'googleSecret等搜索'facebook'是非常容易的。
要真正安全,你可以對一些加密或其他算法字符串,但這意味着您也將加密密碼存儲在代碼本身中。
總的來說,我認爲(1)給出了最,因爲你應該總是假設在客戶端的任何字符串可以發現/砍死,無論安卓/ Java的使用ProGuard或精縮的JavaScript。
相關問題
- 1. 安全的android與服務器通信
- 2. 安全的iPhone(iOS)/服務器通信
- 3. NodeJS服務器 - 服務器安全通信
- 4. 在android中的網絡服務器通信安全
- 5. Android與服務器通信
- 6. Android - Web服務器通信
- 7. 如何確保服務器 - 服務器應用程序中的通信安全?
- 8. Android的安全HTTP通信
- 9. Android服務通信
- 10. 安全地與後端服務器通信
- 11. 兩個後端服務器之間的安全api通信
- 12. 兩臺服務器之間的安全通信
- 13. 在應用傳輸安全下與用戶服務器通信
- 14. 與數據庫的身份服務器通信 - 安全問題
- 15. 開發需要與服務器安全通信的Flash遊戲
- 16. c#客戶端和java服務器之間的安全通信
- 17. 保護Flash AS3代碼+與服務器的安全通信
- 18. C#客戶端和PHP服務器之間的安全通信
- 19. Chrome擴展和服務器之間的安全通信
- 20. 與服務器通信 - 安卓應用
- 21. 安全客戶端服務器通道
- 22. Android網絡服務器安全
- 23. Android與Web服務器數據通信
- 24. Android客戶端服務器通信
- 25. Android,客戶端服務器通信
- 26. Android + NodeJS:客戶端 - 服務器通信
- 27. 最快的android服務器通信
- 28. Android和MySQL服務器通信
- 29. Jersey REST服務器安全和Android客戶端安全
- 30. GWT服務器到服務器通信
我相信你是指這篇文章。 http://stackoverflow.com/questions/14570989/best-practice-for-storing-private-api-keys-in-android –