Eri*_*man 34 authentication android web-services token sharedpreferences
我有一个与服务器通信的应用程序.当用户登录到应用程序时,在服务器上创建身份验证令牌并将其存储在SharedPreferences应用程序中,并且每当应用程序从Web服务请求数据时,验证身份验证令牌.
我的问题是,将身份验证令牌存储在SharedPreferences?中是否安全?我问,因为具有root权限的用户可以访问首选项,提取令牌并使用它.
无论如何,在这方面有更多的安全吗?
Jef*_*man 42
简而言之,是的,这是一件非常合理的事情.
你可以做的最好的只是混淆.如果将令牌保留在内存中,则root用户可以查看该令牌.如果您对其进行加密,则必须将加密密钥存储在设备上,否则您将无法使用该令牌......并且密钥可以像令牌一样容易被盗.
如果有人在设备上有root,则所有投注均已关闭.不要针对那种情况进行优化.如果您的应用程序具有超级高安全性,请不要让它在root设备上运行,或实现远程擦除功能,用户可以报告其设备被盗,并且您可以使服务器上的令牌无效.
Android 4.3推出了Android Keystore.据称这为加密密钥提供了一个安全的存储.这可用于存储用于解密使用传统方法存储的加密令牌的密钥.但是,引用的链接没有提到root设备如何影响其安全性.
更新2018年:大多数现代Android设备都通过SoC提供的可信执行环境(TEE)拥有硬件支持的密钥库.这使得黑客无法获得密钥库主密钥,否则密钥库主密钥将被解密您存储在Android密钥库中的密钥.
好吧,"不可能"是一个强有力的词.最好说"不可行".意思是,您需要像电子显微镜这样的东西来扫描融合到提供TEE的SoC中的位.如果您是那种数据需要这种关注的人,那么您可能会遇到更大的问题.
| 归档时间: |
|
| 查看次数: |
20269 次 |
| 最近记录: |