【问题标题】:Android - How to completely secure values stored in sharedPreferences?Android - 如何完全保护存储在 sharedPreferences 中的值?
【发布时间】:2016-01-29 14:38:12
【问题描述】:

据我了解,可以检索存储在SharedPreferences 中的数据。因此它是不安全的。有人可以建议我如何完全保护数据吗?我知道可以加密和存储数据,但我想知道,还有其他方法吗?

【问题讨论】:

  • 您是否担心其他应用可能会读取您的数据?在这种情况下,您可以设置应用程序私有首选项
  • ^ 仍然会在有根手机上中断

标签: android android-sharedpreferences android-security


【解决方案1】:

如果使用 Context.MODE_PRIVATE 创建存储在 SharedPreferences 中的数据,则只能由您自己的应用程序访问。

不过,如果用户的手机是 root 用户,那么 root 应用程序可以读取数据(即使是使用 Context.MODE_PRIVATE 创建的)。

永远无法避免这种情况。但您可以采取预防措施,例如加密 SharedPreferences 中的数据。
SecurePreferences 库就是一个很好的例子:https://github.com/scottyab/secure-preferences

【讨论】:

  • 谢谢老兄.. 我相信你所建议的是路的尽头,即加密和存储数据。
【解决方案2】:

共享首选项作为文件存储在设备上的文件系统中。默认情况下,它们存储在应用程序的数据目录中,文件系统权限设置仅允许特定应用程序运行的 UID 访问它们。

因此,它们是私有的,因为 Linux 文件权限限制了对它们的访问,就像在任何 Linux/Unix 系统上一样。

任何对设备具有 root 级别访问权限的人都可以看到它们,因为 root 可以访问文件系统上的所有内容。

如果您担心此类对您的偏好(或您的应用程序写入的任何数据)的访问,那么您需要对其进行加密。你可以google一下。

【讨论】:

    【解决方案3】:

    试试这个https://prashantsolanki3.github.io/Secure-Pref-Manager/ 以轻松使用共享首选项,它还会在将密钥和值保存到首选项之前对其进行加密。

    保存值的示例代码:

    SecurePrefManager.with(this)
                .set("user_name")
                .value("LoremIpsum")
                .go();
    

    【讨论】:

      猜你喜欢
      • 2014-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多