android - 在 Android 应用程序中安全下载数据

标签 android security

我有一个 URL,它返回包含我的数据的 JSON 字符串。现在,我想保密这些数据,所以只有我的 Android 应用程序可以显示它。

我的第一个想法是使用私钥(在服务器端)对数据进行编码并将相同的私钥存储在应用程序中,以便它可以解码消息。然而,攻击者(用户)可以反编译.apk并获得私钥。

  1. 您知道如何保护它吗?
  2. 反编译 Java 是 simple . Android .apk 怎么样?我听说有一种叫做 ProGuard 的东西 - Android 默认使用它吗?它是否保护代码?

最佳答案

这通常是无法做到的:如果用户需要查看数据,他们必须能够对其进行解密等。您可以通过不将数据存储在磁盘等方式来使其变得更加困难,但坚定的用户/attacker 可以转储内存、使用调试器等来查看数据。考虑一下您首先要保护的威胁是什么,然后再决定行动方案。

如果您只希望您的应用能够下载数据,则需要使用某种身份验证 + SSL。如果您在应用程序中对 key 或密码进行硬编码,则提取它相当容易,因此这不会给您带来太多好处。如果您让用户在每次使用该应用程序时都输入密码,他们会很快感到沮丧并留下一堆 1 星评级。一个中间立场是使用某种基于 token 的身份验证,例如 OAuth(或 ClientLogin,如果你真的需要,但它正在被弃用)并让用户使用他们现有的帐户进行身份验证,这样他们就不会必须注册并记住另一个密码。大多数 Android 设备已经设置了 Google 帐户,因此您可以使用它,但这需要额外的权限和用户同意(确认对话框)。

关于android - 在 Android 应用程序中安全下载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12240861/

相关文章:

php - 我如何判断我的内存是否已被 PHP 应用程序安全释放?

c# - XML 注入(inject)攻击

java - Java 安全管理器的使用

java - JVM如何增加常量池限制

android - 无法解析配置 ':classpath' 的所有文件

java - 为什么我的代码会抛出 ClassNotFoundException?

java - 在 Android 应用程序中输入 EditText 时播放声音

PHP session 安全提示

android - Youtube API v3,如何获得每个国家的顶级艺术家

security - 在 Openshift 上以非 root 用户身份运行 nginx 并监听端口 80