【问题标题】:Android app data, can the user access/edit it?Android 应用数据,用户可以访问/编辑它吗?
【发布时间】:2012-10-11 12:27:35
【问题描述】:

我正计划开发一个应用程序,我不希望它“仅在线”,所以我希望能够在用户设备内部存储数据,即应用程序数据。这是“安全的”吗?或者人们可以摆弄应用数据吗?是否有任何安全的离线方式来存储应用数据?

我尝试阅读http://developer.android.com/guide/topics/data/data-storage.html#filesInternal,这表明它是安全的,但在其他地方有人说根深蒂固的手机可以忽略这一点。那么它是否安全? -如果是的话,如果手机已root,有什么方法可以“阻止应用程序”?

【问题讨论】:

  • 那么重要的应用程序,如银行/ping 它是如何保护的?如果apks可以反编译...?

标签: android storage


【解决方案1】:

在root手机上,用户可以读取数据。

Google 尝试使用 JellyBean 加密应用程序数据以防止这种情况发生,但该功能目前已被禁用,因为它破坏了太多应用程序。

您可以检测到一些对手机进行生根的方法,例如使用roottools。 但是没有可靠的方法来检测手机可能被植根的所有方式。

即使您可以确保手机没有被 root,在您下载数据后,什么会阻止用户对手机进行 root?

请注意,即使您不将数据下载到文件中:攻击者使用已root 的手机仍然可以将您的应用程序的.dex 文件传输到他的PC。然后他可以反编译它(例如通过使用dex2jarjd-gui)来获取有关如何从您的服务器读取数据的信息。 因此,您的应用从服务器访问的任何信息也可能被攻击者访问。

【讨论】:

  • 是的,所以我的 APK 也总是可用的吗? :(
  • 是的。我想将应用程序视为一种精美的网页:您不能信任客户端(在这种情况下,客户端是运行您的应用程序的手机)。攻击者在客户端拥有比您的应用更多的权限。可以以任何可以想象的方式修改客户端。因此,要回答您有关如何保护银行应用程序的问题:很可能与保护银行网页的方式相同:通过实现安全服务器端而不是客户端。
【解决方案2】:

我遇到了同样的问题,但发现加密是处理这种情况的唯一机制,但这当然会增加设备的负担,但如果这是强制性的,那么唯一的选择是使用加密或隐写术

【讨论】:

  • 加密/隐写术几乎没用,因为用户可以访问密钥和算法以及数据。最多,这会增加用户访问用户数据的过程,但不会阻止他们。你说的是DRM,有两种类型的DRM:已经破解的和还没有人尝试破解的。
【解决方案3】:

这“安全”吗?

默认情况下,它对其他应用程序是安全的。

其他地方有人说有根手机可以忽略这一点

root 手机的用户可以运行具有超级用户权限的应用,并且这些应用可以访问设备上的任何文件。

因此,内部存储中的数据对用户来说是不安全的,因为它是用户的手机,而不是您的手机,因此它是用户的数据,而不是您的。大多数用户不会接触您的数据,但所有用户都有权这样做,前提是他们采取了足够的措施。

如果是的话,如果手机已root,有什么方法可以“阻止应用程序”?

没有确定手机是否已root的可靠方法。

【讨论】:

  • 如果是这样的话,android可以为我们提供什么安全性来防止有价值的数据被滥用?
  • @AndroSelva:如果您不希望用户“滥用”“有价值的数据”,唯一真正的解决方案是没有用户。下一个最佳解决方法是不要将数据存储在用户的设备上,从而迫使用户在您的应用程序之外弄清楚如何自己下载数据。
  • 如果我的应用是离线应用怎么办?
  • @AndroSelva:那么您需要做出不担心数据的业务决策。与您的数据被盗版相比,零售商遭受入店行窃的风险更大。零售商为阻止入店行窃而采取的基本预防措施相当于您使用内部存储(与外部存储相比,外部存储不需要用户访问 root)。
猜你喜欢
  • 1970-01-01
  • 2020-02-02
  • 1970-01-01
  • 1970-01-01
  • 2011-03-25
  • 2017-02-02
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
相关资源
最近更新 更多