【问题标题】:Securely storing credentials安全地存储凭据
【发布时间】:2014-01-30 21:56:57
【问题描述】:

我们的应用需要附带多个用户名、密码和令牌,以访问其他基于 Web 的服务。我已经对此进行了相当多的谷歌搜索,但无法弄清楚如何使用安全存储的凭据来发布应用程序。任何有关如何实现这一目标的建议将不胜感激。

【问题讨论】:

  • 答案是不可能的。该应用程序将需要访问明文凭据。你不能在让别人看到的同时隐藏某些东西。
  • 如果你想从他们那里保护它,那么不要把它放在他们的设备上,其他任何东西都只是混淆。

标签: android


【解决方案1】:

归根结底,您在 .apk 文件中打包的是 Java 字节码,如果您使用 Google 搜索“反向工程 Java 字节码”,您将获得有关如何提取该文件信息的工具和教程。我可以想出一些好的做法来帮助您提高应用的安全性,具体取决于您愿意在应用上工作的程度:

  • pro-guard:那是一种给予,使用 pro-guard!
  • 您可以使用一些小技巧使事情变得更复杂,以加密格式存储所有这些字符串并在运行时对其进行解密。
  • 作为最后一点的一个不错的附加组件:在您的开发者控制台上,您会找到“此应用程序的您的许可证密钥”。您可以在开发期间使用该密钥对信息进行加密,并在运行期间从 Google Play 获取值以使用它进行解密。有关它的更多信息HERE
  • 此许可证密钥还可用于验证应用的真实性。
  • 您还可以将这些密钥构建为本地库。存储在 C++ 编译代码中的字符串比字节码更难破解。

总而言之,这个链接对你来说可能是一个很好的阅读:http://developer.android.com/training/articles/security-tips.html

【讨论】:

  • 非常感谢。这很有帮助。
  • 我的意思是:詹姆斯布莱克的回答也很有效。不惜一切代价尝试将内容集中在您的服务器端。如果数据不在 .apk 中,则不可能从中被黑客入侵。
  • 我喜欢你就如何让某人更难获取数据提出了一些建议。 C++的想法也是一个绝妙的想法,是我没有想到的。
【解决方案2】:

由于应用程序必须对其进行解密,因此无法安全地执行此操作,除非您让该人在安装后下载信息,但仍然需要信息才能获取数据应用程序来使用它。

如果您不想信任用户,最安全的方法是让他们将请求发送到您的服务器,然后您的服务器使用自己的凭据访问感兴趣的网站并返回数据给用户。

这样,数据在一个地方得到保护。

否则,如果他们足够努力,有人可以获取凭据。

【讨论】:

  • 唉,接下来的问题是:你如何保护服务器?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 2012-10-05
  • 2020-04-06
  • 2021-07-31
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多