单一密码 VS 用户名和密码

3

使用用户名和密码登录相对于仅使用单个密码的登录有哪些安全优势?

如果要求用户名必须唯一,则其他用户无法拥有该用户名,用户可以映射到具有该ID的用户帐户。当攻击者针对用户名和密码进行暴力破解时,与攻击者针对单个密码进行暴力破解相同。但使用单个密码,攻击者可以尝试通过暴力破解所有具有相同密码的帐户。

在登录到应用程序后,您的会话使用单个密码进行身份验证,即会话ID。因此,攻击者可以尝试通过暴力破解会话ID来登录到所有帐户。当然,会话ID通常非常长,因此很难进行暴力破解。

如果应用程序自动生成密码令牌,并始终添加唯一前缀(前缀长度存储在数据库中)以映射到特定用户的密码,那么怎么样呢?这样的密码实际上是用户名和密码的组合,但用户并不知道?这种设置是否具有与用户名和密码系统相同的安全性?


我会投票将其迁移到security.stackexchange.com,那里可能会得到更好的答案 - 但似乎没有这样的选项。(不过你可以考虑在那里提问 :)) - jcoder
2个回答

1

当考虑单一密码方法时,我可以看到许多可能的问题,例如如果您允许用户设置自己的密码,那么仅使用密码作为登录凭据会使您的应用程序面临巨大的安全漏洞。

最常见的情况是用户注册并使用像他们的名字或其他常用不安全密码这样的密码,从而使暴力破解变得容易。

此外,请考虑随着用户数量的增长,访问您网站的可接受密码数量也会增加,这使得暴力攻击更容易成功。即使使用自动生成的密码,这也是我最担心的问题。

第三点,我来尝试注册您的网站,我输入我的密码“Bob1”,现在如果另一个用户已经输入了密码“Bob1”呢?您会告诉我该密码已存在吗?两个用户不能使用相同的密码登录不同的帐户。

然而,要考虑的主要问题是用户习惯于输入用户名和密码。我个人不想注册一个只需输入密码的网站,最重要的是我不想使用一个自动生成且难以记住密码的网站。

如果您关心安全问题(正如您应该关心的那样),我建议您执行严格的密码规则(过期时间、长度、内容),并教育用户了解不安全密码的缺陷。在创建密码时,您可以检查它是否与用户输入的任何信息(例如姓名/出生日期等)匹配。
总的来说,我认为用户名/密码组合比单个密码更好,因为这样做既有利于安全,又有利于可用性。还可以参见http://xkcd.com/936/

0
如果您仅使用密码,那么某人可以输入像“helloworld”这样的单词并登录到一个随机帐户中。 因为会有人使用这个密码。
有许多人会使用熟悉的短语作为密码。这对用户来说很方便。
在用户名密码组合中不存在这种类型的漏洞。

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