将电子邮件发送到用户的密码重置

问题描述:

的流程是:将电子邮件发送到用户的密码重置

  1. 用户输入电子邮件地址
  2. 后提交,电子邮件被发送到用户
  3. 电子邮件中将包括一个链接,将采取用户重置密码页面。

现在,我该如何根据电子邮件地址获取用户ID并对其进行加密?那么链接应该是什么?就像我想要的是获取用户ID,然后以某种方式对其进行加密,以便链接不包含实际ID,并且该链接将使用户访问将有文本框重置密码的页面。我只是困惑如何去做。

也是这种安全的方式?重置这样的密码?

我通常在数据库中创建一个新表:

PasswordresetRequest具有以下字段:

  • 编号:GUID - 密码重置请求的标识。
  • ACCOUNTID:字符串 - 用户的用户名
  • 创建:DATATIME - 当密码重置创建的时间戳

流程如下:在网站

  1. 用户要求密码重置。
  2. 在PasswordresetRequest表中创建一条新记录。
  3. 将带密码重置页面链接的邮件以密码请求标识作为请求参数发送给用户。
  4. 用户点击电子邮件中的链接,将他发送到密码重置页面。
  5. 如果从请求参数中的数据库中提取密码请求。如果可以找到请求或者请求不比例如12小时向用户呈现表格,以便他可以输入新密码。

这很容易实现,对于大多数网站来说足够安全。

+0

写得很好,谢谢 – Kjensen 2011-07-22 16:12:02

有很多方法可以做到这一点。如果您的主要担心是安全性,一种方法可能是发送一个链接,其中包含一个guid参数,您可以在您的最终(在数据库表,文件或任何适合您的用户)中创建和存储该参数以及与其关联的用户标识。当密码重置请求进入时,您检查guid并查看您的db/file/whatever中是否有一个匹配值,并继续进行密码重置。不要忘记从存储中删除GUID以防止多次使用相同的链接。