gpt4 book ai didi

asp.net - 在默认的 ASP.NET Core 项目中,为什么 "Forgot password"功能会两次请求用户电子邮件?

转载 作者:行者123 更新时间:2023-12-02 02:55:01 24 4
gpt4 key购买 nike

在 Visual Studio 2017 中,如果您创建一个新的 ASP.NET Core Web 应用程序(Razor 页面),配置为使用个人用户帐户在应用程序中存储用户帐户 ,“忘记密码”流程如下。

  1. 用户进入登录页面
  2. 用户点击“忘记密码?”
  3. 用户输入电子邮件地址并点击“提交”
  4. 向用户发送一封电子邮件,其中包含重置密码的链接。此链接包含用户 ID (Guid) 和用于重置的代码。
  5. 用户单击链接并转到“重置密码”页面。
  6. 用户输入电子邮件、密码和确认密码,然后点击重置。

然后重置密码。

我的问题是,考虑到用户 ID 已经在 URL 中,是否有某些特定原因要求用户在第 6 步中输入他的电子邮件。重置密码页面可以通过 ID 查找用户,而不是询问电子邮件地址。

我认为这是一项安全功能,以防有人拦截该链接。但是拦截链接可能意味着拦截包含链接的电子邮件,然后用户电子邮件无论如何都会被知道。所以我觉得我错过了什么。

最佳答案

对我来说这听起来像是一个安全问题。

即使您可以查找用户 ID,向他们显示他们的电子邮件,这将是更好的用户体验;让用户使用重置代码再次输入他/她的电子邮件会稍微安全一些。这样,密码重置仍然包含您知道的信息 您拥有的信息,以便在密码重置过程中对用户进行身份验证。您知道的是电子邮件地址,您拥有的是重置代码(可能还有用户 ID)。

如果电子邮件不是必需的,并且攻击者以某种方式获得了重置密码信息但不知道用户的电子邮件地址,则攻击将能够使用 guid 和重置代码重置密码。

如果需要电子邮件,而攻击者不知道电子邮件地址,那么攻击者将无法仅使用重置信息(用户 ID/代码)。

密码重置并没有真正经常使用,也不一定是您网站中对用户最友好的部分。最好是更安全。

关于asp.net - 在默认的 ASP.NET Core 项目中,为什么 "Forgot password"功能会两次请求用户电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49882979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com