我正在编写通过电子邮件发送的链接,以便用户重置密码。我希望这个链接保留两个参数“发送日期”和“用户ID”。所以它可能看起来像
www.resetpassword.aspx?senddate="..."&userid="..."
我认为这些参数应该加密,我想知道的是,有必要通过一些复杂的双向算法进行加密,或者我可以将ASCII字符串转换为十六进制代码。
我应该让用户看到链接中有发送日期和用户ID吗?这有什么通用标准吗?
答案 0 :(得分:4)
您需要包含一个键控哈希,以防止攻击者替换其他用户ID。
答案 1 :(得分:3)
我不会加密它。当用户启动密码重置时,将随机令牌放入其用户详细信息中(如果您有数据库)。验证该令牌。成功重置密码后,从db中删除该令牌。
答案 2 :(得分:1)
不要在查询字符串中显示UserId。
您可以在数据库中保留密码重置记录。创建一个哈希并将其分配给UserId,SendDate,ExpiryDate以及您需要的任何其他内容。
在查询字符串上发送哈希值,当您收到请求时,请查找与其关联的详细信息。