允许用户更改密码的模式。用户是否必须重复新密码并输入旧密码?

时间:2011-07-08 23:57:01

标签: design-patterns passwords reset-password

关于在SO上恢复密码有很多问题,但是考虑到以下两种情况之一,不是要更改密码:

1)用户已经在系统中进行了身份验证(通过用户/ pw或通过第三方认证,例如facebook / twitter) 2)用户知道他或她的旧密码。

鉴于这些起点,我有两个截然不同的问题,即允许用户以最少的步骤更改其密码的最佳做法是什么。

  

场景(用户已经过身份验证并登录系统):
  输入旧密码: _ __ _ __ _ (1:我可以摆脱这个)
  输入新密码: _ __ _ __ _
  再次输入新内容: _ __ _ __ _ (2:我可以摆脱这个)

1)没有用户输入旧密码是否可以?在这种情况下,我假设用户已经在系统中进行了身份验证。让用户重新输入密码似乎是多余的。我理解这对于高安全性应用程序(例如银行业务)来说很重要,其中用户离开会话无人看管可能允许某人输入新密码而不知道使他们进入这种情况的密码。

在我提出的示例中,应用程序的安全性不高,风险很低。此外,由于我们允许第三方认证(facebook / twitter),理论上如果其他人在机器上并且用户有facebook / twitter的实时cookie,他们可以进入该帐户。

2)没有用户输入两次新密码是否可以。这感觉有点像90年代。人们现在已经习惯了密码,他们输入密码的可能性比他们预期的要大5%,这似乎并没有超过两次输入密码的时间。在5%的情况下,最糟糕的情况是他们只需重置密码(或者只需登录facebook / twitter并重置密码)。我发现现在这样做的一个网站是Quora(尽管他们仍然执行第1步)。我没有看到很多其他人也这样做。

4 个答案:

答案 0 :(得分:6)

首先,我要提醒你永远不要假设用户是他所说的人,特别是在更改允许他们访问帐户的密钥时。这是一种非常好用的方法,总是需要密码验证来编辑密码。

至于输入密码两次,大部分是在后端完成,你可以比较两个密码,并确保它们是相同的。这样做是为了确保用户打算在键入密码时键入密码。不可能连续两次输入相同的拼写错误,因此如果两个密码相同,你可以很好地假设它们没有拼写错误。

就我个人而言,我宁愿花一天时间重新输入一个密码,而不必为了弄清楚我的密码错误,然后重置密码,访问我的电子邮件,重新访问网站而烦恼,然后重新输入我的密码。在一天结束时,您仍然需要输入两次,第一种方法更加简化。

我永远不会允许用户编辑身份验证方法,而不会让他们首先验证使用身份验证方法的能力。有些用户在离开座位时让他们的计算机登录,这允许其他人坐下来访问私人数据,如果他们有权更改密码而无需输入当前密码,那么打开帐户就更容易被滥用。

答案 1 :(得分:3)

关于1)。我不相信一个在尝试更改密码时不会问我旧密码的应用程序,我会暂时忘记输入旧密码的麻烦,而不是有人在没有注意到的情况下更改密码的风险,这没关系如果这是我的银行帐户或仅仅是我的杂货清单。

2)我的屁股已经保存了两次,需要双重输入您的密码,很容易输入您的密码的一个小变种,可能会非常有害,锁定您的帐户。

你应该考虑到,用户不会经常更改他们的密码,所以麻烦得到回报,我会保留旧的公式,询问你的上一个密码,并要求你输入新密码两次。

答案 2 :(得分:2)

让他们输入旧密码的一个很好的理由是合法用户起身去洗手间,恶作剧者决定更改密码。

个人我不介意两次输入新密码。也许有些人会这样做。

你当然可以选择消除其中一个或两个步骤,它可能不会引起太多麻烦。但它可能会。

IMO消除此用户名/密码垃圾的更好方法是执行SO所做的操作,并使用OpenID或其他替代身份验证方法,如X509证书。

答案 3 :(得分:2)

据我了解,输入旧密码的必要性是在用户意外离开自己登录并离开帐户的情况下防止帐户被劫持。是的,在那些情况下,劫机者(通常是某人的朋友,他们注意到他们自己登录了Facebook)会做愚蠢或冒犯性的事情,但至少,如果没有原始密码,他们就无法有效锁定原始用户。

在第二种情况下,我认为要求用户再次输入密码并不合适;对于好的密码,它们应该相对复杂,因此有点难以打字。要求第二次进入是一个有点麻烦,但不是太不合理(IMO)。