显然我无法提供包含链接的电子邮件
example.net/changepassword.aspx?email=bob@example.com
所以我需要
example.com/changepassword.aspx?email=fregrtgethytrhergerg
我该怎么做?我想我需要一个加密密钥?我可以在不创建额外数据库表的情况下完成所有这些操作吗我对安全一无所知。
我发现的最接近的解释可能与我想要的内容有关How to Hash and Salt Passwords in ASP.NET的文章。
答案 0 :(得分:3)
我在这里假设你想制作一个“恢复丢失的密码页面”,它会向你的用户发送一封电子邮件。这是真的吗?
您不想创建新表,但是您可以在现有表中创建新列(或两列)吗?
如果是这样,您可以在现有表中添加“guid”列和其他列“guidExpirationDate”。
当用户要求输入新密码时,请在表格中创建一个Guid(代码:Guid.NewGuid()
)并设置过期日期为DateTime.Now.AddMinutes(30)
。
在您的链接中,提供Guid而不是电子邮件地址。加载页面时,出于安全原因,请验证Guid是否已过期。
此处无需加密。
答案 1 :(得分:1)
您可以在表格中添加一列( VerificationCode ),其中包含一个unquie值(您可以使用GUID)。
当用户请求更改密码时,生成&更新数据库中的VerificationCode&在URL中使用相同的内容:
example.com/changepassword.aspx?verificationCode=yourUniqueKey