Android服务器通信安全

时间:2016-10-14 16:10:05

标签: android api server decompiling source-code-protection

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

1 个答案:

答案 0 :(得分:0)

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

有几件事要做:

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

  2. 确保字符串是静态final。在这种情况下,Compiler和Proguard允许字符串内联。这使得知道字符串的含义变得有点困难。如果您只有一个“Config”类,那么在facebookAppId,'secret'googleSecret等中搜索'facebook'非常容易。

  3. 为了确保安全,您可以对字符串执行一些加密或其他算法,但这也意味着您也将加密密钥存储在代码本身中。

  4. 一般来说,我相信(1)给出最多,因为你应该总是假设客户端中的任何字符串都可以被发现/被黑客攻击,无论是使用Proguard的Android / Java还是缩小的javascript。