-5

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

4

3 回答 3

3

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

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

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

于 2015-10-29T12:48:37.263 回答
0

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

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

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

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

于 2015-10-29T12:47:36.920 回答
0

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

保存值的示例代码:

SecurePrefManager.with(this)
            .set("user_name")
            .value("LoremIpsum")
            .go();
于 2015-11-06T15:33:28.743 回答