Java 什么';发送重置密码链接时保护用户ID的最佳方法是什么

Java 什么';发送重置密码链接时保护用户ID的最佳方法是什么,java,mysql,tomcat,servlets,Java,Mysql,Tomcat,Servlets,我创建了一个servlet,用于检查LDAP中的用户ID,如果存在,它会向该用户发送电子邮件 具有链接的用户: "Please follow this <a href=\"" + url + "/ConfirmedResetPasswordPage.jsp?action=" + userID + "\"> link </a>to reset your password" ; “请按照此操作重置密码”; 我被告知这不是一个好的做法,我应该在MySQl中创建一个包含use

我创建了一个servlet,用于检查LDAP中的用户ID,如果存在,它会向该用户发送电子邮件 具有链接的用户:

"Please follow this <a href=\"" + url + "/ConfirmedResetPasswordPage.jsp?action=" + userID + "\"> link </a>to reset your password" ;
“请按照此操作重置密码”;
我被告知这不是一个好的做法,我应该在MySQl中创建一个包含userID、timeResetRequested和GUID字段的表。 并在电子邮件中传递此GUID,而不是用户ID

并在2小时后删除该记录。
是否有更好、更干净的方法来实现这一点,并且仍然保持安全?

是的,这是一种更好的方法

然而,关于是否发送GUID或用户id的问题与重置超时无关

想象一下,有一天你重置了密码,两个月后你卖掉了你的账户。然后,您可以通过在2个月前的电子邮件上重置密码来恢复您的帐户。你不需要知道新的帐户密码来重置它,只需简单地登录到你的电子邮件并破解你的帐户即可

现在,尽管说重置计时器比guid/用户id更重要,但您必须想一想,您希望您的用户知道他们的用户id吗?如果没有,GUID是屏蔽它的好方法