0

我正在研究 2FA 身份验证应用程序实施。这是过程:

  1. 用户输入登录名和密码并提交表单
  2. 登录和密码发送到验证功能
  3. 页面重新加载 - 如果它们是正确的,我将它们存储在隐藏的输入中
  4. 用户输入验证码
  5. 登录、通行证和授权码被发送到验证功能
  6. 如果一切正确,用户已登录

我的问题是:

如何正确存储步骤 1 中提交的登录名和密码?将它们存储为纯文本(未加密)是否安全?或者我应该先对它们进行哈希处理?存储在会话中?

感谢您的建议!

4

1 回答 1

0

您的第 5 步略有错误:您不需要再次验证密码。因此,您不需要将其存储在任何地方,您只需要保留登录名即可。

服务器端,您应该在用户会话中保持身份验证状态:未登录,在 2fa 进程中,完全登录(可能具有管理员等角色)

我相信Symfony 文档中的这张图很好地解释了它: 解释两因素身份验证的图表

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

于 2021-10-21T10:00:42.700 回答