重置密码或丢失密码更好吗?

11 security email passwords

当用户忘记密码让他们重置密码或只是将丢失的密码发回给他们时,它会更好吗?

Eim*_*tas 40

发送丢失的密码意味着您将它们保留为纯文本或以双向加密方式加密,这是不安全的.

我建议使用Wordpress机制重置密码:

  1. 发送确认密码重置的链接
  2. 按照确认链接到生成随机密码的页面并将其发送给用户
  3. 让用户使用新密码登录并将其更改为更好的记忆.

  • 只需添加一点Eimantas的回复.为安全起见,服务器不应该以纯文本格式保存用户密码.它应该保存单向加密密码.当用户登录时,客户端应使用javescript加密密码并将加密的字符串发送到服务器.这有点像Unix登录的工作方式.用户经常对不同的网站使用相同的密码.如果以纯文本格式保存,您将可以访问所有这些文本.作为用户,我会非常担心. (6认同)
  • @ lh3在客户端上使用JavaScript加密它,然后将其发送到服务器?你是认真的吗? (3认同)
  • 使用Javascript哈希密码几乎没有增加安全性.安全性应该在服务器端完成,使用SSL来保护客户端 - 服务器通信.Javascript不适合这份工作. (3认同)
  • 只应存储密码的哈希值; 密码本身不应存储在任何服务器上. (3认同)
  • 如果有的话,这是一个信任的问题 - 你真的希望你使用的每个网站的管理员知道你选择了什么密码吗?当然,理想情况下,人们会为每个网站使用不同的密码,但实际上却很少 - 这太麻烦了. (2认同)

Zed*_*Zed 17

您不应该首先发回密码.您最好的机会是生成随机的一次性密码,并将其发送到用户的注册电子邮件地址.

您可以部署安全问题(例如"您的第一个狗的名字")和其他神秘主义,但我相信用户往往会忘记这些问题的答案甚至超过他们的密码,让您回到原点.


DEA*_*0CC 7

许多用户在许多网站上使用相同的密码.为了尊重人们的隐私,建议始终使用SHA-256或MD5等散列函数对单向加密的密码进行存储.但是你不应该在没有任何额外盐的情况下使用它们,因为可以简单地对这些密码执行字典攻击.照顾用户隐私是您与客户之间信任关系的基础.

我还推荐Eimantes提到的密码重置机制.确认电子邮件消息是此过程中的主要任务.始终让用户确认他的密码重置请求,以避免虚假请求导致无法访问帐户.

您可以将用户转发到可以输入新密码的页面,而不是计算随机密码.

还要记住,在没有ssl的情况下通过http发送密码是非常不安全的,尤其是在像wlan热点这样的公共网络中.看看HMAC等消息身份验证方法与Diffie-Hellman-Key-Exchange的结合.或者至少在登录期间使用额外的hash + salt函数.

  • SHA-256和MD5太快而不能被认为是安全的.查看BCrypt或PBKDF2. (2认同)

Jac*_*esB 1

重置密码更安全,因为第三方可以拦截邮寄的密码。

编辑:通过重置,我假设您指的是向用户发送令牌的常见模式,该令牌允许用户定义新密码。显然,如果您只是生成一个新密码并将其通过邮件发送,那么它与仅发送原始密码一样不安全。当然,令牌只能使用一次,否则它就和密码一样好。

这里唯一的风险是第三方拦截令牌用户之前更改密码。这比发送密码的风险更低,因为只要密码在使用中,截获的密码就会有用,而令牌只会有用一次,会发现是否有人使用了该令牌。

请注意,最高的风险可能不是人们窃听电子邮件流量,而是有人稍后查看您的邮件,或侵入您的网络邮件帐户,因此在您的邮箱中保留仍然有效的密码确实很糟糕。

  • 差别很大,但不是安全方面的,而是可用性方面的。对于用户来说,获得一个链接,只需单击并直接显示“选择新密码”对话框,这肯定比用户必须将临时密码复制并粘贴(或键入)到其他地方然后单击要更容易输入...还有很多不需要的步骤^^(但也应该作为故障安全措施) (3认同)
  • 那么,鉴于邮寄不安全,用户如何获得重置密码呢?:) (2认同)
  • 好吧,当网站唯一确定的关于用户的信息是他们的电子邮件地址时,在解决加密电子邮件问题之前我们不会解决这个问题,不是吗? (2认同)
  • @Gumbo:所以不允许用户保留密码。强制他/她在第一次登录后更改它。 (2认同)