多重密码登录:好还是坏

4
我正在努力创建最灵活的用户登录系统,并寻求一些想法的反馈。该系统目前也有OpenID集成选项。
我正在修改我的一个用户登录系统,这个概念突然袭来... 很多人都记不住一个密码,我认识的大多数人都会在不同网站使用几个密码,只是为了记得住它们。
如果能以用户友好的方式实现,让用户设置多个密码(可以限制数量),当用户输入其中任何一个时就可以通过,这样是否是个好主意呢?当然,用户也可以选择仅使用一个密码并忽略此选项...
显然,允许更多密码的话,猜中密码的可能性就更高,但只是非常轻微的可能性...
这个想法对用户更有益还是会带来麻烦呢?(即能够使用多个密码进行登录的想法)
这可能会引起哪些安全问题?
这对用户来说是否值得?(忽略所需的额外编码和结构)
其他想法...
忘记密码系统:
我已经实现了一个“忘记密码”系统,它不涉及重置用户密码,而是提供一个临时密码,充当临时后门,以便用户进入更改密码。我很可能会为这个系统做同样的事情,但一旦用户添加了永久密码,它就会禁用其他密码,或者类似于此... 再次强调,必须以用户友好的方式设置。

2
如果这是一个公共访问系统,你可以使用类似OpenID的东西来完全消除密码。 - cdhowie
5个回答

3

我个人认为这可能会让人感到困惑。

对用户更有益吗? 可能是。但我认为对很多电脑文盲来说可能会更加困惑。

是否会引起潜在的安全问题? 实际上不会,除了增加有人窃取用户账户的几率外。

你会如何实现必要的“忘记密码”系统?只需将其重置为一个计算机生成的密码吗?


@simshaun 加密的密码可以被解密,而且比你想象的要容易。最好的做法是存储密码哈希值。当用户输入密码时,该密码也将被散列,并进行比较。 - GolezTrol
@simshaun 除了使用 SSL,为了更安全,您可以发送一个存储在会话中的随机种子。然后对密码进行哈希处理,并在客户端(使用 JavaScript)上使用该种子对哈希进行哈希处理。在服务器上,密码哈希也与种子一起进行哈希处理。现在,所有这些哈希处理的结果必须匹配。优点:不存储密码(因此无法被黑客攻击并用于用户可能使用相同密码的其他服务)。永远不会发送相同的值。即使不使用 SSL,这使得破解此登录变得困难(几乎不可能)。 - GolezTrol
在这种情况下,当用户忘记密码时,您可以生成一个新密码。您可以设置一个标志,表示这是系统生成的密码。然后,您可以在第一次登录时构建更改密码的要求,或者在用户下一次忘记密码时至少覆盖它。 - GolezTrol
@GolezTrol,我并不想把这变成一个关于哈希与加密优点的争论。我认为这已经超出了OP问题的范围。(另外,你暗示我认为解密密码不容易。我从未说过它不容易。但是,我要说,如果使用一个合适的算法对密码进行加密,没有密钥(假设密钥长度足够)解密加密密码并不像你想象的那么容易。 :) - simshaun
当然,但是该密钥必须在可触及的地方,因为您的软件需要解密密码。因此,很有可能任何获得访问密码(您自己的私人数据库)的人也可以轻松访问软件(和密钥)。这就是密码加密的问题。难以隐藏密钥。 :) - GolezTrol
显示剩余5条评论

2
我认为这会鼓励人们重复使用现有的密码,这是一个不好的主意。他们甚至不应该考虑输入他们银行账户的密码,以防他们忘记在您网站上使用的特定密码之一。
考虑使用OpenID作为替代系统。它允许人们为任何一组被视为不重要到足以值得拥有独特、保密密码的网站使用单个密码。最重要的是,他们永远不必告诉你他们的密码是什么。

我也将其集成到我的系统中... =) - Ruttyj

1

您正在增加网站被暴力攻击破解的可能性。

认证的整个主题(谢天谢地)已经超越了仅限于用户名+密码的非常严格的概念 - 尝试跟踪许多不同帐户是一件麻烦事。根据您系统的限制,我建议考虑OpenID作为专用帐户的替代方案。


此外,您增加了网站被攻击的风险,因为其他网站被攻击可能会导致您的网站受到影响。您实际上在鼓励用户在多个网站使用相同的密码(顺便说一下,请停止这种行为),因此如果他们使用的其他网站中有一个被攻击,您也会受到威胁。 - Slartibartfast

0

首先,我建议将您的问题发布为维基,因为没有单一客观答案。

现在,在我看来,拥有多个密码并不是一个好主意。当用户忘记密码时,必须有一个“重置我的密码”页面,因此这不是问题。拥有多个密码可能会使情况变得更糟:用户将忘记每个配置的密码(或者至少忘记她在您的网站上添加到密码列表中的密码),在这种情况下,重置过程将更加混乱。

安全性也可能会受到一些影响。

最后但并非最不重要的是,您想要构建的系统与我们当前在其他网站上使用的系统非常不同。这意味着:

  • 对用户来说会很困惑,
  • 构建和管理将会很困难,需要不同的密码检查系统、不同的数据库架构、一个专门的密码管理页面等。

我认为 CW 已经被移除了(我在某个地方读到过,但似乎找不到那个页面了……) - jwueller

0
一些网站会将多个OpenID账户链接到一个(主)账户上。还有,如果你的OpenID提供商之一出现故障,那么你就无法登录该网站了。当用户通过OpenID登录您的系统时,请为其分配一个唯一ID。然后给用户选项来将另一个OpenID链接到该唯一ID。请不要在您的数据库中存储密码,而只存储OpenID URL,以确保您的系统安全。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接