我正在开发一个旨在防止未经授权的访问的应用程序(例如,银行应用程序)。有两个保护选项:使用生物识别(默认一个)和用户密码。我想知道,处理用户忘记密码的情况的最佳实践是什么。 我正在考虑提示用户输入设备 PIN 以提醒他们密码,但我不知道该怎么做。
我想这实际上取决于信息的合理性以及您当前如何存储/验证密码。但是,假设您的威胁模型可以让用户仅使用当前设备密码即可获得访问权限,您可以使用钥匙串 API(不是最友好的 API)并存储某种标志。添加此类项目时,您将使用SecAccessControlCreateFlag.devicePasscode
,它将始终在访问此类条目之前提示用户输入其iPhone密码。因此,假设用户需要重置它,如果您能够访问钥匙串条目,您就知道他们输入了正确的设备密码,因此您应该允许他们重置其应用密码。主要警告是,用户禁用他们的密码或没有密码会使您的标志无效,因此如果他们忘记了他们的应用密码,他们将永远被锁定。当然,钥匙串还有很多额外的细微差别,例如项目是否同步到其他设备,何时可用等,但希望这有点用。