在Android的共享首选项中安全存储Oauth2访问/刷新令牌?

我知道我可以将值设置为’MODE_PRIVATE’,只有我的应用程序/ userId才能访问它们,但是,用户有什么方法可以随时访问它们吗? 那么将它们存储在共享首选项中是否“安全”,还是有更好的地方?

此外,如果我后来决定公开一些用户设置的偏好,我能否隐藏这些值?

谢谢。

编辑:我也了解内部存储,但我想知道我是否可以使用共享首选项实现更简单的操作。

共享首选项只是存储在应用程序数据文件夹中的纯文本XML文件。 无论如何,这不是一个安全的地方。 查看这些文件并提取令牌非常容易。 您仍然可以使用共享首选项,但需要加密要存储的信息。 至于“内部存储”,它们与“共享首选项”共享相同的位置,因此它们仍然易于查看。

您的未加密数据对于手机中运行的其他应用程序是安全的,但不是恶意用户的安全数据。

如果您想向用户显示一些偏好,您不必担心这些偏好会出现。 我认为shared_preferences可能是存储这些东西的“最安全”的地方。 除非用户拥有root电话并且他们给予恶意应用root权限才能读取您的数据文件,所以就我所知,没有什么可担心的。 虽然我期待其他人的回应。 出演!

即使您将访问令牌存储在设备上的安全位置,您也应该认为它可以被揭示。 这就是为什么你不应该在你的移动应用程序代码中有客户机密。 对于访问令牌,您可以尝试保护它们的安全,但是您无法使其100%安全。 因此,您不应该获得不必要的范围或不必要的长寿命令牌。

PS。 通常,移动设备使用“response_type = token(隐式授权)”并且它不应该获得刷新令牌。 这取决于身份validation服务器的策略..