对于密码恢复,我的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加密的所有字段。
我想知道这种方法是否安全?
答案 0 :(得分:1)
快速回答:否。
忘记您在网址中使用的所有参数。只需生成一个随机的,不可猜测的字符串(例如UUID)并将其作为参数放入URL中。然后通过您为他存储的电子邮件地址将该URL发送给用户。将UUID与您现在在URL中的所有参数一起存储在数据库中。当用户单击链接时,验证所有参数(时间戳等)并让他设置新密码。