我正在研究 2FA 身份验证应用程序实施。这是过程:
- 用户输入登录名和密码并提交表单
- 登录和密码发送到验证功能
- 页面重新加载 - 如果它们是正确的,我将它们存储在隐藏的输入中
- 用户输入验证码
- 登录、通行证和授权码被发送到验证功能
- 如果一切正确,用户已登录
我的问题是:
如何正确存储步骤 1 中提交的登录名和密码?将它们存储为纯文本(未加密)是否安全?或者我应该先对它们进行哈希处理?存储在会话中?
感谢您的建议!
我正在研究 2FA 身份验证应用程序实施。这是过程:
我的问题是:
如何正确存储步骤 1 中提交的登录名和密码?将它们存储为纯文本(未加密)是否安全?或者我应该先对它们进行哈希处理?存储在会话中?
感谢您的建议!
您的第 5 步略有错误:您不需要再次验证密码。因此,您不需要将其存储在任何地方,您只需要保留登录名即可。
服务器端,您应该在用户会话中保持身份验证状态:未登录,在 2fa 进程中,完全登录(可能具有管理员等角色)
我相信Symfony 文档中的这张图很好地解释了它:

最后一点,如果这不仅仅是出于私人/教育目的,我鼓励您使用可以处理大部分过程的受信任的库。