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

标签 java mysql tomcat servlets

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

"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 个月后您卖掉了您的帐户。然后,您可以通过在 2 个月前的电子邮件中重置密码来恢复您的帐户。您无需知道新帐户密码即可重置它,而只需登录您的电子邮件并破解您的帐户即可。

现在,尽管说重置计时器比 guid/用户 ID 更重要,但您必须思考,您是否希望您的用户知道他们的用户 ID?如果您不这样做,GUID 是一种很好的屏蔽方式。

关于java - 发送重置密码链接时保护用户 ID 的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25250352/

相关文章:

php - 如何使用php将复选框值保存到mysql数据库中

java - 切换到 STS 3.8.3 时出现 ClassNotFoundException

Java 8 使用对象子级的字段将 List<Object> 转换为 Map<K,V>?

java - SSL 握手无法从 Android 客户端连接到 Google

mysql - Docker:与 mysql DB 链接失败

PHP 选择同一行 3 次?

java - 如何在 Spring MVC 和 Hibernate 中将对象列表转换为 JSON?

java - 即使在覆盖同一对象的哈希码和等于之后,HashMap 也不会检索这两个值

java - taskdef 类org.apache.jasper.JspC 需要的类找不到: Could not initialize class org. apache.jasper.JspC

java - 找不到 applicationContext 类路径