我的网页上有一个区域由以下脚本保护:http://www.wikihow.com/Create-a-Secure-Login-Script-in-PHP-and-MySQL 我现在需要的是忘记密码时的某种密码重置功能。 只有少数用户,我尽量让它变得简单。
所以我认为它会起作用:
是否存在任何强大的安全漏洞,或者这是一种常见方式吗?那是什么最好的做法?我真的不想要任何额外的安全问题或类似的东西......
更新:密码经过哈希处理和加密。
答案 0 :(得分:10)
这不像应该的那样安全。
您正在通过电子邮件(不安全)发送用户名和密码(通常以难以逆向工程的形式) - 并且这些用户名和密码可能会在其他网站上重复使用。
使用随机生成的字符串,而不是任何真实的凭据。将随机字符串存储在数据库中,并使用它来查找要重置密码的用户。只允许字符串在有限的时间内工作。
答案 1 :(得分:2)
以下是试验性的流程:
仅供参考,您绝不应以任何方式传输密码或其哈希值。
答案 2 :(得分:1)
加密密码哈希的唯一位置应该在您的服务器后端,而不是其他地方。
攻击者可以使用几乎无限的处理能力来强制执行哈希,如果他有要检查的哈希值,而在任何其他情况下,他们将不得不受到服务器容量的限制,您将立即意识到。
如果您想保证其安全,请生成随机密码重置密钥并将其发送到用户的注册电子邮件(并且没有其他 - 电子邮件安全性是用户的问题)。如果用户使用该密钥返回到站点(通常是GET参数),则可以让用户访问密码更改表单。
据我所知,这是目前最常见和最安全的密码重置方法之一(尽管有2个身份验证等)。