首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当“忘记密码”功能可用时,如何确保密码安全

问当“忘记密码”功能可用时,如何确保密码安全
EN

Stack Overflow用户
提问于 2010-12-01 20:56:19
回答 4查看 1.4K关注 0票数 0

我和一位同事正在讨论如何在我们公司的专有web应用程序上实现“丢失密码”功能。

我们已经决定,要创建一个帐户,将有三个必需的元素

1)屏幕名称

2)电子邮件地址(用于登录)

1)密码(显然,也用于登录。存储为单向散列__)

一旦我们有了这个信息,试图注册的用户将被发送一个带有链接和激活密钥的验证电子邮件。要激活他们的帐户,他们将需要遵循链接,输入激活密钥,并重新输入他们的电子邮件和密码。如果一切都匹配,那就做预告片吧!激活了一个新的用户帐户。

激活帐户后,让我们说用户忘记了他们的密码。对于如何处理这种情况,我们有两个想法。

构想1

  1. 用户单击“忘记密码”
  2. 用户将被提示输入其帐户的电子邮件地址
  3. ,如果电子邮件匹配活动的、未关闭的帐户,则向已验证的电子邮件地址
  4. 用户发送临时密码,如果临时密码与电子邮件地址匹配,则向
  5. 用户尝试使用临时密码

H 111登录,提示用户重置密码。在临时密码被替换之前,阻止完全登录。

概念2

这需要在注册过程中收集秘密问题和秘密回答数据。

用户单击“忘记Password"

  • User”提示输入电子邮件地址和机密question

  • Upon验证的答案,然后允许用户重置密码

。

关注点

我们关注的一个问题是(我们公司内部的)多名员工将使用一个单一的登录帐户。我们中的一些人认为,这消除了秘密问题的方法作为一种选择。

但是,由于电子邮件不安全,通过电子邮件发送的密码(临时的或非临时的)将易受攻击。

问题摘要

考虑到内部操作限制(多个人到单个登录),这些想法中哪一个将是最安全和用户友好的选择?还是,既不够用?

编辑

堆栈溢出可以帮助我评估答案吗?下面表达的意见很少,但没有任何迹象表明答案的质量。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-12-02 18:35:28

在我的系统中,当有人请求丢失密码时,我:

  1. I生成GUID并将其与请求的日期/时间一起存储在数据库中。
  2. 向用户发送一个带有GUID编码的链接,以便当他们单击GUID
  3. 链接时,确保GUID/链接尚未“使用”。
  4. 确保请求不超过30分钟(出于安全考虑,他们只有一个很小的时间窗口来使用激活链接--从请求密码屏幕上的消息得知)

如果所有这些条件都是正确的,我让他们创建一个新的密码。

一般来说,虽然电子邮件并不是非常安全,但如果有人的电子邮件帐户被泄露,你已经有了一个巨大的安全漏洞,但通过告诉他们他们只有30分钟的时间来重新激活他们的帐户,当有人可能滥用信息时,它就会减少窗口:它只能被使用一次,它可以进入一个已知的很好的电子邮件地址,而且它只能用于我所做过的30 minutes...for系统,这是足够安全的,而不会给用户(或管理员)带来太多负担。

票数 1
EN

Stack Overflow用户

发布于 2010-12-01 21:03:35

我使用了发送到电子邮件的临时密码,尽管它不是最安全的。您还可以为临时密码添加一个时间限制,这将稍微增加安全性。我认为多个安全问题,然后向电子邮件发送临时密码将是相当安全的。

票数 0
EN

Stack Overflow用户

发布于 2010-12-01 21:07:11

作为一个用户,我不喜欢安全问题,因为为了使它们真正安全,我必须让答案很难记住。

下面是我要使用的模式:

  1. 忘记密码链接将用户发送到带有UID的URL中
  2. 忘记密码页发送一封电子邮件,其中包含要在该页上输入的代码,
  3. 只有当来自具有正确UID的POSTed的POSTed。
  4. ,如果有效代码是来自有效URL的POSTed,则将用户发送到重置密码链接。

< code >G29

重要的是要记住,UID和代码之间的映射不应该是可预测的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4329048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档