【发布时间】:2019-06-23 10:46:39
【问题描述】:
我使用从bin2hex() 生成的令牌让用户重置密码。此令牌按原样存储在数据库中,当用户使用它时,他们的令牌会针对数据库中的令牌进行搜索,如果它们相同,则可以重置密码。
我在这里(PHP - How to implement password reset and token expiry)读到我应该在存储之前对密码进行哈希处理。这似乎是个好主意,但我想知道如何搜索散列密码,是否还需要在发送给用户的基于令牌的 url 中包含用户名/电子邮件,以便可以再次搜索它们并且然后检查哈希令牌?
是否可以在重置链接中包含一个明显的标识符(我想这是因为它被发送到他们的电子邮件地址)。
【问题讨论】:
-
重置令牌只是随机字符串。它们不应该包含任何信息,因此没有什么可以散列的。您的用户表将有一个用于存储唯一令牌的 reset_token 列。如果您希望令牌过期,那么还要添加一个 reset_token_expire 列。我认为您可能使问题过于复杂。
-
我想我很担心,基于此链接 (stackoverflow.com/questions/3164978/…) 中的讨论,如果令牌以纯文本形式存储并且有人获得了对数据库的访问权限,那么他们将拥有该令牌对安全产生影响。你是对的,对于一个小应用程序来说它可能过于复杂。