相同的用户名,但通过用户名和密码的组合来区分
Same usernames but distinguish by combination of username AND password
允许多个人在系统中使用相同的用户名,但使用不同的密码组合代表一个唯一用户的潜在缺点是什么?
我有一个相对较小的系统,最多有大约 100 个用户。该系统与财务无关,未经授权的访问不会造成任何伤害(尽管这是我们想要防止的事情!)。
系统基本上是按客户端分区的,在客户端中是用户名。遗留系统过去允许在客户端中使用相同的用户名,并通过查看密码的前 3 个字符(未加密)来区分用户是哪个客户端。
我建立了一个新系统,无论客户端如何,每个用户都需要一个唯一的用户名,但是他们现在希望能够多次使用相同的用户名。
我能想到的唯一方法是将用户名和密码的组合作为查找用户 ID 的关键(数据库中的主键是一个 int 字段,因此没有问题)。
这种方法的缺点是什么?
我唯一能想到的是,从技术上讲,两个具有相同用户名的人猜到对方的密码并登录到错误的帐户在技术上是可能的。
我知道这不是最佳做法,但对于小型系统,我真的看不出任何其他大问题。还有更多输入吗?
这种方法的缺点是:
- 如果用户使用相同的用户名,则可能会意外登录到其他用户的帐户,而如果使用该用户名的其他用户恰好拥有该密码,则可能会输入错误的密码。在您的小型系统上,这是一个小风险。请注意,如果您的系统将来需要,这将不会扩展。
- 如果您是 correctly storing passwords - salted and hashed using a slow algorithm,并说此算法需要一秒钟的哈希时间,则此登录时间将乘以拥有该用户名的用户数量。因此,如果五个用户拥有用户名
foo
,那么一个不幸的用户每次都必须等待 5 秒才能登录他们的帐户,因为他们输入的密码会依次针对每个盐进行哈希处理。
- 攻击者可以利用登录延迟 enumerate users using a side-channel timing attack。因此,如果攻击者尝试以
foo
身份登录并且需要 5 秒,他们就知道他们有 5 倍的机会猜测该帐户的密码。
该用户名的另一个用户可能会使用登录延迟来推断存在另一个帐户,并且他们可能会以尝试登录自己的帐户为幌子尝试暴力破解它。
攻击者有多次机会猜测用户名的密码,而不仅仅是一次。
无法实施帐户锁定策略以限制对同一帐户的多次登录尝试,而不锁定具有相同用户名的其他用户。
双因素身份验证方法的安全性降低,因为一次性密码密钥有两次机会被攻击者猜到。此外,SMS 或 phone 呼叫身份验证等系统不能用作第二个因素,因为系统不知道该给谁打电话或发短信(并且向多个用户发送消息会给这些用户造成混淆)。
如果日志文件显示对用户名的暴力攻击,则很难知道哪个用户是攻击目标。
允许多个人在系统中使用相同的用户名,但使用不同的密码组合代表一个唯一用户的潜在缺点是什么?
我有一个相对较小的系统,最多有大约 100 个用户。该系统与财务无关,未经授权的访问不会造成任何伤害(尽管这是我们想要防止的事情!)。
系统基本上是按客户端分区的,在客户端中是用户名。遗留系统过去允许在客户端中使用相同的用户名,并通过查看密码的前 3 个字符(未加密)来区分用户是哪个客户端。
我建立了一个新系统,无论客户端如何,每个用户都需要一个唯一的用户名,但是他们现在希望能够多次使用相同的用户名。
我能想到的唯一方法是将用户名和密码的组合作为查找用户 ID 的关键(数据库中的主键是一个 int 字段,因此没有问题)。
这种方法的缺点是什么? 我唯一能想到的是,从技术上讲,两个具有相同用户名的人猜到对方的密码并登录到错误的帐户在技术上是可能的。
我知道这不是最佳做法,但对于小型系统,我真的看不出任何其他大问题。还有更多输入吗?
这种方法的缺点是:
- 如果用户使用相同的用户名,则可能会意外登录到其他用户的帐户,而如果使用该用户名的其他用户恰好拥有该密码,则可能会输入错误的密码。在您的小型系统上,这是一个小风险。请注意,如果您的系统将来需要,这将不会扩展。
- 如果您是 correctly storing passwords - salted and hashed using a slow algorithm,并说此算法需要一秒钟的哈希时间,则此登录时间将乘以拥有该用户名的用户数量。因此,如果五个用户拥有用户名
foo
,那么一个不幸的用户每次都必须等待 5 秒才能登录他们的帐户,因为他们输入的密码会依次针对每个盐进行哈希处理。 - 攻击者可以利用登录延迟 enumerate users using a side-channel timing attack。因此,如果攻击者尝试以
foo
身份登录并且需要 5 秒,他们就知道他们有 5 倍的机会猜测该帐户的密码。 该用户名的另一个用户可能会使用登录延迟来推断存在另一个帐户,并且他们可能会以尝试登录自己的帐户为幌子尝试暴力破解它。
攻击者有多次机会猜测用户名的密码,而不仅仅是一次。
无法实施帐户锁定策略以限制对同一帐户的多次登录尝试,而不锁定具有相同用户名的其他用户。
双因素身份验证方法的安全性降低,因为一次性密码密钥有两次机会被攻击者猜到。此外,SMS 或 phone 呼叫身份验证等系统不能用作第二个因素,因为系统不知道该给谁打电话或发短信(并且向多个用户发送消息会给这些用户造成混淆)。
如果日志文件显示对用户名的暴力攻击,则很难知道哪个用户是攻击目标。