2016-10-14 70 views
0

几天前,一个人反编译我的应用程序,并在我的源代码中显示一个问题。我在应用程序的源代码中硬编码链接和我的服务器的密码,我不知道通过反编译任何人都可以看到我的源代码。我使用proguard,但proguard不会混淆字符串。这让我想知道如何做到这一点的正确方法?我的应用程序如何进行api调用,服务器可以对其进行身份验证?我做了一项研究,但没有看到有关这方面的内容。我的应用不管理用户和密码。我存储在我的代码中的用户和密码是要在服务器中登录的用户和密码。Android服务器通信安全

+0

我相信你是指这篇文章。 http://stackoverflow.com/questions/14570989/best-practice-for-storing-private-api-keys-in-android –

回答

0

是的,很容易看到反编译的Java代码来获取密钥等。

有几件事情要做:

  1. 确保“应用程序键”或“标记”不深管理员权限秘密。许多SaaS/API提供商为您提供多个密钥。一种是客户端密钥在可执行的特权/操作中受到限制,另一种是具有更多特权但不会通过客户端代码泄漏出去的服务器密钥。在你的情况下,你不应该共享相同的服务器登录/管理密码。杠杆原理最小特权(https://en.wikipedia.org/wiki/Principle_of_least_privilege

  2. 确保字符串是一个静态的最终。在这种情况下,编译器和Proguard允许字符串内联。这使得知道该字符串的用途有点困难。如果你有一个单独的“Config”类,那么在facebookAppId,'secret'googleSecret等搜索'facebook'是非常容易的。

  3. 要真正安全,你可以对一些加密或其他算法字符串,但这意味着您也将加密密码存储在代码本身中。

总的来说,我认为(1)给出了最,因为你应该总是假设在客户端的任何字符串可以发现/砍死,无论安卓/ Java的使用ProGuard或精缩的JavaScript。