0

对于密码恢复,我的 vb.net 应用程序向用户发送一封电子邮件,其中包含以下格式的链接。

http://<password-reset page url>?id=<userid>&tpr=<times Password Reset>&time=<time when the link was generated>

Times Password Reset是用户使用密码重置链接重置密码的次数。它在数据库中的值与查询字符串中的值匹配。为确保不能使用相同的密码重置链接两次重置密码。 Time用于检查在使用链接之前不超过 24 小时。并userid用于识别用户。

如果所有条件都匹配,则提示用户更改他/她的密码。中的所有字段都使用 AES 加密。

我想知道这种方法是否安全?

4

1 回答 1

1

快速回答:没有。

忘记您在 URL 中使用的所有参数。只需生成一个随机的、不可猜测的字符串(例如 UUID)并将其作为参数放入 URL 中。然后通过您为他存储的电子邮件地址将该 URL 发送给用户。现在将 UUID 与 URL 中的所有参数一起存储在数据库中。当用户单击链接时,验证所有参数(时间戳等)并让他设置新密码。

另请参阅OWASP Cheat Sheet on Password Reset

于 2013-06-20T13:44:01.880 回答