【发布时间】:2015-11-04 02:45:19
【问题描述】:
我正在尝试通过发送重置密码的链接(即向注册用户发送带有一次性令牌的电子邮件)来找到忘记密码功能的最佳做法。令牌将存储在数据库中,当用户单击链接时,我们会检查令牌并允许用户设置新密码。
设计忘记密码功能时的最佳实践 -
- 令牌必须是不可预测的,最好使用 不基于时间戳或值的“真正”随机代码 像用户ID。
- 与密码一样,令牌在存储之前应该经过哈希处理 数据库。这使得它们对攻击者毫无用处,即使 数据库被盗。
reset-link 最好是短的以避免出现问题 电子邮件客户端,并且仅包含安全字符 0-9 A-Z a-z (base62 编码)
令牌的到期时间应在个位数小时内。
令牌应该被标记为已使用,在用户拥有 成功设置新密码。
当用户更改密码或请求另一个密码时 重置,使已与其帐户关联的所有令牌过期。
这些是我发现的一些要点。应该考虑哪些其他安全问题?
【问题讨论】:
标签: rest authentication restful-authentication