相同的用户名,但通过用户名和密码的组合进行区分

时间:2015-02-20 05:35:40

标签: security

允许多人在系统中使用相同的用户名,但是使用不同的密码组合代表一个独特的用户有什么潜在的挫折?

我有一个相对较小的系统,最多只有100个用户。该系统不是财务系统,未经授权的访问不会造成任何伤害(尽管这是我们想要阻止的!)。

系统基本上由客户端分区,在客户端内是用户名。遗留系统用于在客户端中允许相同的用户名,并通过查看密码的前3个字符(未加密)来区分用户的客户端。

我已经构建了一个新系统,每个用户都需要一个唯一的用户名,但是他们现在希望能够多次拥有相同的用户名。

我能想到这样做的唯一方法是将用户名和密码的组合作为查找用户ID的关键(数据库中的主键是一个int字段,所以那里没有问题)。 / p>

这种方法的缺点是什么? 我能想到的唯一一个是技术上可以让两个拥有相同用户名的人猜测其他人的密码并登录到错误的帐户。

我知道这不是最佳做法,但对于小型系统,我真的不能看到其他任何重大问题。还有什么输入?

1 个答案:

答案 0 :(得分:1)

这种方法的缺点是:

  • 如果用户具有相同的用户名,则用户可能会意外登录到另一个用户的帐户,如果具有该用户名的其他用户恰好拥有该密码,则会输入错误的密码。在您的小系统上,这是一个很小的风险。请注意,如果您的系统将来需要这种规模,那么这不会成倍。
  • 如果你是correctly storing passwords - salted and hashed using a slow algorithm,并且说这个算法需要一秒钟的哈希值,那么这个登录时间将乘以拥有该用户名的用户数。因此,如果五个用户拥有用户名foo,则一个不幸的用户每次都必须等待5秒才能登录他们的帐户,因为他们输入的密码依次针对每个盐进行哈希处理。
  • 攻击者可以使用旁边频道enumerate users将登录延迟用于timing attack。因此,如果攻击者尝试以foo登录并且需要5秒钟,他们就知道他们有5倍的机会猜测该帐户的密码。
  • 该用户名的其他用户可以使用该登录延迟来推断存在另一个帐户,并且他们可以尝试以尝试登录自己的帐户为幌子强制执行该帐户。

  • 攻击者有多次机会猜测用户名的密码,而不只是一个。

  • 帐户锁定政策无法实施以限制针对同一帐户的多次登录尝试,而不会使用相同的用户名锁定其他用户。

  • 双因素身份验证方法的安全性会降低,因为一次性密码密钥有两次机会被攻击者猜到。此外,诸如SMS或电话呼叫认证之类的系统不能用作第二因素,因为系统不知道呼叫或发送文本的人(并且多个用户的消息将导致这些用户混淆)。

  • 如果日志文件显示对用户名的暴力攻击,则很难知道哪个用户是攻击的目标。