代码之家  ›  专栏  ›  技术社区  ›  Incognito

密码检索/重置的安全方法?

  •  5
  • Incognito  · 技术社区  · 14 年前

    在我开始之前,我不使用的理由 OAuth 我认为这不是我们在这个项目上应该使用的东西,我们的目标是一个将被打包并转售给公司的平台,这些公司连接到他们自己的一组用途,我们真的不想拥有我们不受100%控制的账户,我们不想它是与其他服务的共享登录,我们不想强迫人们使用google/yahoo/openid/aol/facebook/blogger/wordpress/任何账户。

    现在,我想要的是让用户重新设置密码的最佳方法。

    我讨厌秘密问题的概念:你上哪所学校?好吧,让我们检查一下你的Facebook页面。你的一年级老师是什么?让我们随便问问他们。

    我讨厌通过电子邮件使用一次性密码:从什么时候开始电子邮件是安全的?你老板看了。你每天都给我发垃圾邮件。它进了你的垃圾箱。它没有加密发送。

    我也不想用密码重置密码。这是不合理的。

    我真的不知道该怎么做才是最好的办法,所以我想我应该问问社区。

    5 回复  |  直到 11 年前
        1
  •  9
  •   Borealid    14 年前

    你的问题是你需要把信任外包出去。如果用户忘记了密码,您将不再拥有 直接的 信任他们的方式,所以你必须使用外部资源来重建你的关系。

    如果你认为电子邮件不安全(实际上是这样),你可以试试打电话。用临时密码给他们打电话。或者传真。或者普通邮件,或者短信息等等。

    这与重置传输的电话线/邮政运营商一样安全,在大多数地区,电话截获或篡改邮件都受到法律的严格惩罚。

    如果这不好,考虑向用户发放OTP令牌、智能卡或其他东西。

        2
  •  4
  •   Von    14 年前

    除非能够亲自检查这个人,我想你已经列出了我看到的所有合理的选择。在我看来,通过电子邮件发送的一次性密码是最好的选择,因为人们至少希望自己的电子邮件保密。我个人讨厌秘密问题-答案太大的可能性是公开的(见莎拉佩林电子邮件事件)。如果你要做秘密问题,至少让用户自己选择问题。

        3
  •  2
  •   Zafer    14 年前

    我认为这需要一个困难的实现,但将新密码作为文本消息发送到用户的移动电话可能是另一种解决方案。手机比个人收件箱更安全。

    然后,要求用户输入他们的手机号码。不需要该功能的用户可以通过电子邮件提供新密码。

        4
  •  1
  •   Sergey G    14 年前

    使用户选择秘密图像(或图像)。或者让用户上传自己的图片。

    这比 秘密问题 . 秘密问题有两个常见问题:

    1. 用户给出的答案很容易被他人获得。
    2. 用户知道第一个问题,而不是 真实的 答给出 随机的 回答,后来忘记了自己是什么。

    通过让用户选择秘密图像,或者更好地上传自己的图像。在恢复密码时,用户稍后可以更容易地调用它,因为它更容易进行可视化关联。

    当恢复密码时,用户有几个选择来选择正确的图像。

        5
  •  1
  •   Lior Kogan    14 年前

    所以你实际上想让用户证明他是他声称的那个人,而不透露他自己的信息(假设你可以通过社会黑客获取任何信息)

    认证有三种方式:您的身份(生物特征)、您拥有的身份(例如加密狗)和您知道的身份(密码、响应…)。2或3路身份验证比1路安全得多。

    根据定义,密码重置/恢复会降低身份验证过程的安全性,因为它现在不是A,而是(A或B)。(A=密码,B=恢复密码)

    因此,即使您的身份验证过程是单向(密码),恢复过程也应该是双向身份验证。

    让我们看看您在密码恢复过程中有哪些选择:

    1. 你是什么样的人(认识你的系统管理员——通常不适合5000名员工组织,语音打印——实施起来太贵了,…)
    2. 你有的东西(电子邮件帐户,电话号码,…)
    3. 你知道的东西(个人信息)

    请注意,带图片的公司ID标签是双向身份验证(既有您的身份也有您的身份)。

    我认为最好的方法是让员工亲自去IT部门,出示他的图片ID,并要求密码重置。

    如果这是不可行的(太远-例如远程分支机构),请尝试使用一个可以通过电话识别和信任的熟食者,这样员工就必须向本地熟食者显示ID标签。

    如果你不能使用“你是什么”这个词,你只剩下一些你拥有的东西(电子邮件、电话号码、你自己的电脑)和一些你知道的东西(个人信息…)。你逃不了。