2

我有一个从我的网络空间解析数据的应用程序。但如果你对我的应用程序进行逆向工程,任何人都可以找到我存储数据的位置。如何防止其他人访问我的 XML 文件。(我将所有文件路径存储在字符串文件中,所以 proguard 不会解决它),有没有办法将数据保存在工作区中,并且只有应用程序可以访问它`?还是有提供这种功能的服务?(注:我没有任何网络开发经验)

提前致谢 :)

4

1 回答 1

2

没有一个简单的方法可以做到这一点。您可以做几件事,例如密码保护您的目录(但密码必须存储在 apk 中)或使用 API 密钥(但同样,您需要将其存储在 apk 中)。

一种选择是通过某种复杂的算法动态构建字符串路径,从而使 proguard 混淆变得有用。但是,归根结底,您仍然容易受到数据包检查的影响(假设您没有使用 HTTPS)。您还可以构建在应用程序上运行并在服务器上运行的共享密钥生成器(基本上是一种基于时间生成看似随机密钥的算法)。然后将在运行时比较这些值,如果它们匹配,则将提供文件。同样,proguard 混淆将有助于弄清楚算法是如何工作的。

另一种选择是利用 Android 的私人空间。如果手机被扎根,你会感到很沮丧,但这会有所帮助。基本上遵循这个算法:

  1. 安装后让应用程序生成一个唯一的 id
  2. 将唯一 ID 发送到记录它并生成对称密钥的服务器
  3. 将对称密钥存储在应用程序私有存储空间中
  4. 每次发出请求时,都会随请求一起发送唯一 ID
  5. 服务器从数据库中检索先前生成的密钥并使用它来加密正在服务的文件
  6. 然后应用程序从应用程序私有存储空间中加载密钥并解密文件
于 2012-10-03T17:05:15.713 回答