6

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

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

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

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

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

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

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

4

4 回答 4

6

首先,我要告诫你永远,永远,永远,永远,永远假设用户就是他所说的那个人,尤其是在更改允许他们访问其帐户的密钥时。始终需要密码验证来编辑密码是一种非常常用的方法。

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

就我个人而言,我宁愿每天花 10 秒时间重新输入密码,而不必费力地意识到我输入了密码,然后不得不重设密码、访问我的电子邮件、重新访问网站,然后重新输入我的密码。在一天结束时,您仍然需要输入两次,第一种方法更加精简。

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

于 2011-07-09T00:04:41.207 回答
3

大约 1)。我不会信任在尝试更改旧密码时不询问我的旧密码的应用程序,我更喜欢偶尔输入旧密码的麻烦,而不是有人在我没有注意到的情况下更改它的风险,没关系如果它是我的银行帐户或只是我的杂货清单,对我来说。

2)我的屁股被保存了几次,需要重复输入您的密码,输入密码的次要变体很容易,并且可能非常有害,将您锁定在您的帐户之外。

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

于 2011-07-09T00:05:08.523 回答
2

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

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

您当然可以选择消除其中一个或两个步骤,它可能不会让您太头疼。但它可能会。

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

于 2011-07-09T00:02:06.183 回答
2

据我了解,输入旧密码的必要性是为了防止在用户不小心登录并离开帐户的情况下进行帐户劫持。是的,在这些情况下,劫机者(通常是某人的朋友注意到他们在 Facebook 上的登录状态)会发布一些愚蠢或令人反感的东西,但至少,如果没有原始密码,他们就无法有效锁定原始用户。

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

于 2011-07-09T00:03:22.237 回答