我的服务器在登录时向我发送访问权限和刷新令牌。我应该通过加密将它们存储在 android 的共享首选项中吗?我想知道存储这些令牌的最佳实践,因为直接存储到首选项中很容易破解。
在 Android 设备上存储身份验证令牌
信息安全
验证
安卓
oauth
2021-08-18 23:21:32
1个回答
Android 支持Application Sandbox的美丽概念,这样所有应用程序都以唯一用户身份运行并在其自己的沙箱中运行。不可调试应用程序的非根设备中的本地数据存储通常是不可访问的。但是,如果设备被植根,应用程序沙箱的概念就会崩溃,安装的应用程序可以作为“root”用户运行,因此可以访问任何其他应用程序存储在其私有目录中的数据(/data/data/package-名称)
将令牌作为明文存储在本地数据存储(SharedPreferences)中不是一个安全的选项,因为可以从非 root 设备轻松访问相同的选项。建议在本地数据存储中使用安全加密算法和安全实现对令牌进行加密。
- 使用AES-GCM-256或ChaCha20-Poly1305等安全加密算法。
- 使用 PBKDF2 进行密钥派生。
- 如果需要,将加密密钥存储在 Android 密钥库中。