当用户忘记密码让他们重置密码或只是将丢失的密码发回给他们时,它会更好吗?
答案 0 :(得分:40)
发送丢失的密码意味着您将它们保留为纯文本或以双向加密方式加密,这是不安全的。
我建议使用Wordpress机制重置密码:
答案 1 :(得分:17)
您首先应该无法发回密码。您最好的机会是生成随机的一次性密码,并将其发送到用户的注册电子邮件地址。
你可以部署安全问题(比如“你的第一个狗的名字”)和其他神秘主义,但我相信用户往往会忘记这些问题的答案,而不是他们的密码,让你回到原点。
答案 2 :(得分:7)
许多用户在许多网站上使用相同的密码。为了尊重人们的隐私,建议始终使用SHA-256或MD5等散列函数对单向加密的密码进行存储。但是你不应该在没有任何额外盐的情况下使用它们,因为可以简单地对这些密码执行字典攻击。照顾用户隐私是您与客户之间信任关系的基础。
我还推荐Eimantes提到的密码重置机制。确认电子邮件消息是此过程中的主要任务。始终让用户确认他的密码重置请求,以避免虚假请求导致无法访问帐户。
您可以将用户转发到可以输入新密码的页面,而不是计算随机密码。
另外请记住,在没有ssl的情况下通过http发送密码非常不安全,尤其是在像wlan热点这样的公共网络中。看看HMAC等消息身份验证方法与Diffie-Hellman-Key-Exchange的结合。或者至少在登录期间使用额外的hash + salt函数。
答案 3 :(得分:1)
重置密码更安全,因为第三方可以拦截邮寄的密码。
编辑:通过重置,我认为你的意思是向用户发送一个允许用户定义新密码的令牌的常见模式。显然,如果你只是生成一个新密码并通过邮件发送它,那就像发送原始密码一样不安全。令牌当然应该只能使用一次,否则它将与密码一样好。
此处只有风险是第三方拦截令牌并在用户之前更改密码。这比发送密码的风险低,因为只要密码正在使用,截获的密码就会有用,而令牌只有一次使用,和你会发现有人使用了密码令牌。
请注意,风险最高的可能不是人们窃听电子邮件流量,而是有人稍后查看您的邮件,或者侵入您的网络邮件帐户,因此在您的邮箱中保留有效密码真的很糟糕。< / p>