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