限制用户名缓存
细节
在iOS上,当用户启用“保存此用户ID”功能时,用户名将缓存在CredentialsManager对象中。此后,在发生任何类型的身份验证之前都会将用户名加载到内存中,从而允许恶意进程拦截用户名。
修复
既方便地存储用户名,又希望在不安全的存储或运行时潜在的拦截操作来避免泄漏这些信息是一件很困难的事情。虽然不如密码那么敏感,但是用户名也是应该保护的私有数据。拥有较高安全性并缓存用户名的一种可选方法是存储一个掩蔽的用户名,而不是真实的用户名,并将身份验证中的用户名值替换为哈希值。该哈希值可以在注册送被创建,并包含有唯一设备令牌。使用哈希和设备令牌的好处是,实际的用户名不会被本地存储或加载到未受保护的内存中,并且不会被复制到另一个设备或在Web上使用。攻击者必须挖掘更多信息才能成功窃取身份验证用户名。