我刚刚注意到这个
article关于一个以明文形式存储用户信息的移动应用程序.我已经注意到在服务器上存储用户密码的想法(使用SHA-512哈希函数),但我不清楚在设备本身存储个人信息的最佳方法.
让我说清楚我基本上只谈论用户名和密码.我的应用程序与之交互的数据根本不敏感,我知道我可以对该数据实施某种对称加密/解密.
出于方便用户的目的,我想为用户提供在本地存储用户名和密码的选项,这样他们每次使用应用程序时都不需要输入用户名和密码.但我知道用户倾向于将重复使用相同的密码用于许多不同的目的,这意味着我需要采取预防措施来保护用户的密码安全.方便和安全之间的经典张力.
在本地存储这些信息只是一个可怕的想法吗?或者是否有相对简单的方法来安全加密? iOS和Android O / S是否对此提供任何帮助?
不一定要寻找详尽的答案,但我非常感谢一些研究课题,文章链接,书籍等等.非常感谢.如果这是一个多余的问题,请指导我提供仍被视为当前答案的任何帖子.
非常感谢你!
最佳答案 设备上的所有数据都会在某种程度上由设备自动加密,使用设备ID作为密钥.这样可以防止数据被设备本身或设备ID之外的任何人轻易读取.
您可以利用密码进行另一级加密,这种密码称为数据保护,它会阻止数据被读取,除非输入密码.
您可以使用NSFileManager访问文件并将NSFileProtectionKey属性设置为NSFileProtectionComplete,从而在应用程序中手动启用数据保护.见:Implementing and Testing iOS data protection.
请注意,用户必须将其设备设置为需要密码,密码越强,数据就越安全.
即使您不将NSFileManager类与NSFileProtectionComplete一起使用,也可以通过应用程序的配置文件轻松启用数据保护.见:Data Protection / NSFileProtectionComplete – successfully supported through entitlements.plist?
我仍然不会存储密码.存储随机生成的会话密钥,这些密钥在登录时创建.至少可以使这些密钥过期,而不是纯文本密码.