在电子邮件中提供更改密码链接的最简单方法是什么



>显然我无法提供带有链接的电子邮件

example.net/changepassword.aspx?email=bob@example.com

所以我需要

example.com/changepassword.aspx?email=fregrtgethytrhergerg

我该怎么做?我假设我需要加密密钥?我可以在不创建其他数据库表的情况下完成所有这些操作吗?我对安全一无所知。

发现可能与我想要的最接近的解释是一篇关于如何在 ASP.NET 中哈希和盐密码的文章。

我在这里假设您要制作一个"恢复丢失的密码页面",该页面会向您的用户发送电子邮件。这是真的吗?

您不想创建新表,但是可以在现有表中创建新列(或两个)吗?

如果是这样,可以在现有表中添加"guid"列和另一列"guidExexpationDate"。

当用户要求输入新密码时,例如,在表中创建一个 Guid(代码:Guid.NewGuid() ),并使用 DateTime.Now.AddMinutes(30) 设置到期日期。

在链接中,提供 Guid 而不是电子邮件地址。页面加载时,出于安全原因,验证 Guid 是否未过期。

这里不需要加密。

您可以向表中添加一列(验证码),该列将包含取消请求值(您可以使用 GUID)。

当用户请求更改密码时,在数据库中生成并更新验证码,并在URL中使用相同的验证码:

example.com/changepassword.aspx?verificationCode=yourUniqueKey

最新更新