我创建了一个servlet来检查LDAP中的userID,如果它在那里,它会向它发送电子邮件 用户链接:
"Please follow this <a href=\"" + url + "/ConfirmedResetPasswordPage.jsp?action=" + userID + "\"> link </a>to reset your password" ;
我被告知这不是一个好习惯,我应该使用userID,timeResetRequested,GUID字段在MySQl中创建表。 并在电子邮件中传递此GUID而不是userID。
并在2小时后删除该记录。 是否有更好,更清洁的方法来实现这一目标并保持安全?
答案 0 :(得分:1)
是的,这是一个更好的方法。
关于是否发送GUID或用户ID的问题与重置超时无关。
想象一下,您有一天重置了密码,然后在2个月后又出售了您的帐户。然后,您可以通过在2个月的电子邮件中重置密码来恢复帐户。您无需知道新的帐户密码即可将其重置,而只需登录您的电子邮件并破解帐户即可。
现在,尽管说重置计时器比guid /用户ID更重要,但您必须考虑,您是否希望您的用户知道他们的用户ID?如果你不这样做,GUID是掩盖它的好方法。