【问题标题】:How secure are SQLite and SharedPreferences files on Android?Android 上的 SQLite 和 SharedPreferences 文件的安全性如何?
【发布时间】:2011-04-06 06:01:51
【问题描述】:

首先,介绍一下我的背景。我已经在大型 Web 系统上工作了十多年,过去两个月我一直在研究 Android;可以想象,差距是相当大的:)

查看 Android 的 Security and PermissionsData Storage 部分文档,直接与开发人员交谈,阅读书籍和教程,很清楚整个模型的工作原理。但是,我无法找到 SQLite 和 SharedPreferences 文件是否足够安全以存储微妙的非加密信息(例如,OAuth 令牌)的答案。有人可以以任何方式抓住它们吗?引用 Android 的文档:

应用程序存储的任何数据都将分配给该应用程序的用户 ID,并且通常不能被其他包访问。

这是通常无法访问的部分,让我有额外的白发:)

谢谢您,感谢您提供有用的答案:)

【问题讨论】:

  • 我不知道答案,但我不认为数据以任何方式加密。
  • 不,不是。唯一的保护机制是通过文件系统级别的访问权限。但是,通过 root 手机,任何应用程序都可以访问这些 XML 文件。另见:androiddiscuss.com/1-android-discuss/1671.html

标签: android security sqlite sharedpreferences


【解决方案1】:

有人可能以任何方式抓住它们吗?

这取决于某人。正如 Burov 先生所说,root 手机的用户可以随心所欲。默认情况下,普通用户和其他应用程序不能。

这是通常无法访问的部分,让我有额外的白发:)

默认情况下,文件是安全的。如果您愿意,您可以将它们设为全球可读或可写。

这种情况下是不是可以反编译apk文件并找到加密密钥?

这取决于您要防御的对象。如果您要防御其他应用程序,请让用户提供加密密钥。如果你在保护用户,你就完蛋了,就像所有的 DRM 实现都完蛋一样。

【讨论】:

  • 总会有人试图弄清楚某事是如何完成的,并且没有 100% 的保护可能。希望加密数据可以防止大多数尝试成功。我想我们现在必须解决它。
  • @DavidKuridža 如何在运行时生成密钥,例如使用时间戳?然后密钥将不会显示在文件中。有可能吗?
【解决方案2】:

嗯,市场上有很多 SharedPreferences 编辑器应用程序,所以它们绝对不安全。由于用户可以完全访问手机文件系统,因此在有根设备上的数据库也可以轻松完成。因此,如果您希望您的应用完全安全,请加密您的数据。

【讨论】:

  • 这种情况下是不是也可以反编译apk文件并找到加密密钥?
  • “嗯,市场上有很多 SharedPreferences 编辑器应用程序,所以它们肯定不安全。” -- 请说出一些,因为搜索市场没有出现。
  • @David 好吧,您可以通过网络中某个服务器的加密连接获取密钥。可能不是最佳解决方案,但可以确保更高级别的安全性。
  • @CommonsWare:哦,从头开始吧,我被市场上所有的配置文件编辑应用程序所愚弄(你知道,那些改变音量、亮度等)。真丢脸:)
  • 这件事值得思考,谢谢提及。
猜你喜欢
  • 2014-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 2011-03-25
  • 2013-09-27
相关资源
最近更新 更多