我正在尝试为我的网站实施一个简单的密码重置系统。这个想法是这样的:
- 用户请求密码重置链接。
- CodeIgniter 系统通过 MYSQL 使用 RAND 和 MD5(我知道它不安全且损坏,可能最好使用 SHA1 或更好,不是重点)通过 MYSQL 生成随机字符串并将其散列,产生 32 位密钥。
- 向用户发送包含密钥的链接。
- 其余的相当明显。
我想知道是否——
答:MYSQL 函数 RAND 与 MD5(或更好)被生成到设置为 UNIQUE 的字段中,如果它们碰巧生成了该字段下的表中已经存在的键,则会自动重新生成。
B:这是一种可接受的生成密码重置链接的方法。还是最好用盐对用户的电子邮件地址进行哈希处理以防止重复?
显然,这只是围绕整个过程的基本实现和安全需求。