“忘记密码”-如何处理?


18

我阅读了此答案,发现有一条评论坚持不通过电子邮件发送密码:

我不希望通过电子邮件检索密码。这意味着我的密码以纯文本格式存储在某处。仅应将其重置。

这给我提出了处理“忘记密码”选项的问题?

原始密码必须不惜任何代价显示在任何UI中,以便用户能够读取它。那么处理“忘记密码”的方式是什么


我只花了15分钟的时间来解释PHPBB忘记密码功能。
彼得·特纳


1
@gnat您是否有机会检查两个中年龄最大的一个?
Gopi

1
@TechJerk的问题,年龄不是问题,因为这里解释
蚊蚋

Answers:


35

一个好的应用程序设计将无法显式恢复用户密码。这是因为它通常是在通过某种哈希(一种单向操作)运行之后存储的。

处理丢失的密码的最佳方法是执行重置,通过电子邮件将包含生成参数的链接发送给用户帐户,该参数将其标识为该帐户的有效密码重置。此时,他们可以设置一个新密码。

这确实假定您有一个用户电子邮件地址。


还有其他“最佳做法”,尽管并不重要(例如,不首先存储密码),但在时间允许的情况下应适当使用,包括使临时访问令牌在某些事件上随着时间而过期(以便某人的帐户(如果他的收件箱是),则不会受到影响)。
史蒂文

7

您不应将用户主密码存储为纯文本,而可以将临时密码存储为纯文本,即

用户重置密码->创建临时密码->通过电子邮件发送临时密码->用户在下次登录时被迫更改密码(新密码可能不是临时密码)


2
我已经在几个站点中做到了。尽管您可以认为邮件监听程序可以获取密码,但他们也可以获取您将通过电子邮件发送的任何其他临时令牌。对于用户而言,这种方法更简单(他们可以复制和粘贴甚至键入临时密码),并且不会带来安全隐患。
凯特·格雷戈里

除非有人使用安全的方式连接到邮件服务器(即通过TLS的HTTPS或POP3的Web邮件),否则这种通信很容易被嗅探。在这种情况下,某些“ haX0r”可以轻松登录到其他用户的帐户。这就是为什么这是一个坏主意。重置链接应按照Chris的建议发送,并在实际允许用户更改其密码之前,先询问伴随的安全性问题。仍然不是100%安全的(很多时候可以轻易猜出此类安全问题的答案),但是我看不到任何更好的解决方案。
帕维尔Dyda

2
@Pawel Dyda也可以嗅到一个重置链接,如果您的电子邮件被嗅到,我认为在您的电子邮件中最少有一个临时密码。
Viper_Sb 2010年

这就是为什么我写有关安全性问题的原因。
帕维尔Dyda

5

该评论反对在电子邮件中发送原始密码,而不是在电子邮件中发送任何内容。如果该机构可以发送原始密码,则意味着他们拥有该原始密码,这是一个安全问题。评论者并未反对通过电子邮件发送密码,因为在大多数情况下,这很有必要。

正确的方法是,无论出于何种原因,都分配一个只能使用一次的新密码。可能它已经被系统标记为已过期,也许它只是登录到页面中以更改动态生成的密码(一次或一次),无论如何。


4

我最喜欢的事情是应用程序在注册的电子邮件地址上向用户发送电子邮件,该链接具有有效期为X个小时的一次性链接,其中提供“更改密码”页面。

然后,用户可以根据自己的喜好设置密码,而不必冒险将其放入电子邮件中。


4

我的信用卡提供商提供了一个“忘记密码”选项,询问您一些安全性问题(这本身并不是很安全,但是很多银行都这样做了),然后生成一个新代码,并在屏幕上显示一半内容,并通过电子邮件将第二部分内容发送给您。这样一来,如果您无法同时访问网页和电子邮件地址,就无法中断帐户。

不久前,我从可用性角度询问了一些问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.