用户名是不安全的?

时间:2011-02-11 10:20:01

标签: security validation

我们正在构建一个安全的应用程序,并正在讨论用户名所需的验证。 很明显,对于密码,必须建立复杂性规则,但对于用户名,它也是真的吗? 接受一个字母的用户名是不安全的吗?有什么安全问题?

4 个答案:

答案 0 :(得分:2)

实际上,用户ID和密码的组合可以保护您的系统,因此需要 1个字符的ID可以为攻击者提供原本不具备的信息,从而降低安全性。

但是,由于攻击者的搜索空间增加,允许 1个字符的用户ID实际上更多安全,而不是最多10个字符。换句话说,攻击者必须检查1到9个字符之间的所有可能性_除了10个字符或更多字符外。

1个字符ID的主要问题是如何区分Adam,Allan,Aaron和Alexandra: - )

答案 1 :(得分:2)

  

正在讨论所需的验证   用户登录

首先,您谈论的是验证,而不是验证。 The different between validation and verification.

  

接受一个字母是否不安全   登录

它不是特别不安全(因为用户名很少保密)但是它确实限制了你的应用程序。一个字母有多少组合?如果您使用的是英文字母和数字0 - 9,那么您有36个可能的用户名(不是很多)。

我也不明白为什么您要允许甚至强制使用单字母用户名,通常最好在您的应用程序中包含有意义的数据。这通常是一个电子邮件地址,因为它既有意义又独特。

我想听听使用1个字母用户名背后的原因 - 因为我看不出现代软件中通常接受的任何优势,你不能用他们的名字来查找用户,e-邮件地址,或将它们与单个字母相关联的任何其他属性(不包含用于此目的的表格 - 浪费时间)。

答案 2 :(得分:2)

这取决于您尝试获取的安全级别。如果这是一个允许一般公众查看用户用户名的网站,那么它就不会有所作为。 (例如:社交网络和用户配置文件上用于身份验证的用户名包含在页眉中),因为用户名已经可以公开访问。但是,如果不是这种情况,则允许一个字符用户名可以轻松进行用户名枚举。 中低风险漏洞(取决于应用程序),但这一切都取决于您所遵守的合规程度。

这是否必须通过任何合规性测试?比如pci?

编辑:简而言之,是的,您应该要求用户名具有一定的长度,我会说最少5个字符。我最喜欢做的事情是使用他们的用户名发送电子邮件

答案 3 :(得分:2)

上下文始终是相关的(“从什么安全?”)但作为专业审查应用程序安全性的人,使用户名可预测几乎总是一个坏主意,并且单字符用户名当然是可预测的。使攻击者无法预测用户名会增加攻击者处理的熵。密码应该提供您所需要的所有熵,但是用户在选择具有足够熵的密码方面非常糟糕。即使有密码复杂性要求,普通用户也只需要花费最少的工作量来验证(“P @ ndab34R!”不是一个很好的密码)。

如果我知道您允许甚至需要单字符用户名,作为攻击者试图访问帐户,我要做的第一件事是:使用密码字典尝试使用密码猜测所有单字符用户名(根据需要进行修改以满足您的密码要求)。我很高兴有机会进入。一旦进入,这对用户的影响程度取决于网站的类型。如果它是一个公共网站,任何人都可以注册一个帐户,它只会影响我违反帐户的用户。如果它是经过身份验证的网站,我不能随意注册我自己的帐户,现在我已通过身份验证,并且能够在网站上尝试经过身份验证的攻击,这会影响所有用户的安全。

如果您对用户名的要求不高,您可以尝试通过提高其他区域的身份验证安全性来抵消这一点,例如:

  • 强密码要求
  • 为用户分配密码,而不是让他们选择自己的
  • 强大的帐户锁定机制和/或人工验证系统,以阻止暴力攻击