这可能是一个非常基本的问题。
我使用从bin2hex()生成的令牌为用户重置密码。该令牌按原样存储在数据库中,当用户使用它时,将针对数据库中的令牌搜索其令牌,如果它们相同,则可以重置密码。我在这里(PHP - How to implement password reset and token expiry)读到我应该在存储之前对密码进行哈希处理。这似乎是个好主意,但我想知道如何搜索哈希密码,还需要在发送给用户的基于令牌的url中包含用户名/电子邮件,以便可以再次搜索它们。然后检查哈希令牌?可以在重置链接中包含明显的标识符(我想是因为它已发送到他们的电子邮件地址)。
谢谢
Martyn
答案 0 :(得分:0)
是的,您应该对密码重置令牌进行哈希处理,因为
此外,随着用户重用密码,攻击者可以为其他帐户(例如用户的电子邮件)尝试破解的密码,从而增加破坏。
重点:
如果令牌具有足够的熵,可以说20个随机字符0-9 a-z A-Z,那么您可以计算出未加盐的快速哈希(例如SHA-256或SHA-512)并将其存储。这是安全的,因为不可能成功地强行使用这种强大的“密码”。盐腌是完成的,因为人们选择的密码通常相对较弱,因为必须记住它们。
如果“密码重置令牌”允许某人使用其他明文信息来重置密码,则该密码实际上与密码和Should be treated as such相同。 使它们过期几分钟或几小时,并把它们当作秘密对待,因为它们确实如此。
我希望这会有所帮助