android - 如何在 Android 中安全地存储访问 token 和 secret ?

标签 android security oauth preferences token

我将使用 oAuth 从 google 获取邮件和联系人。我不想每次都要求用户登录以获取访问 token 和 secret 。据我了解,我需要将它们与我的应用程序一起存储在数据库或 SharedPreferences 中。但我有点担心安全方面的问题。我读到您可以加密和解密 token ,但攻击者很容易只需反编译您的 apk 和类并获取加密 key 。
在 Android 中安全存储这些 token 的最佳方法是什么?

最佳答案

将它们存储为 shared preferences .这些默认情况下是私有(private)的,其他应用程序无法访问它们。在 Root设备上,如果用户明确允许访问某些尝试读取它们的应用程序,则该应用程序可能能够使用它们,但您无法防止这种情况发生。至于加密,您必须要求用户每次都输入解密密码(从而破坏了缓存凭据的目的),或者将 key 保存到文件中,您会遇到同样的问题。

存储 token 而不是实际的用户名密码有几个好处:

  • 第三方应用不需要知道密码,用户可以确保他们只将密码发送到原始网站(Facebook、Twitter、Gmail 等)
  • 即使有人窃取了 token ,他们也看不到密码(用户也可能在其他网站上使用该密码)
  • token 通常有一个生命周期,并在一定时间后过期
  • 如果您怀疑 token 已被盗用,可以撤销 token

关于android - 如何在 Android 中安全地存储访问 token 和 secret ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10161266/

相关文章:

android - 如何从 XML 文件运行动画?

android - Jetpack Compose collectAsState 问题

android - 我做错了什么 - MapView 上的灰色方 block

security - 可以嗅探一个人的发布请求数据吗?

cocoa - 在 MPOAuthConnection 中设置请求参数时出现问题

java - Android Context对象如何处理

security - Sitecore 8.1 : azure website forbidden by its access permissions 127. 0.0.1

java - 拒绝 j_security_check 上的 GET 方法

javascript - AngularJS $http.get ('' 中缺少参数)

Android:在 Volley 请求中生成 Oauth1 签名