我最近遇到了几个对用户名有复杂性要求的网站,例如“必须是 8 个字符长并且至少包含 2 个数字”。从安全的角度来看,这有什么真正的额外好处吗?
我认为,由于用户名被设计为标识符而不是秘密,因此这是一个不必要且令人讨厌的策略。这让我特别恼火,因为它被视为一种“安全”要求,它只提供了安全的假象,而牺牲了便利性。
我最近遇到了几个对用户名有复杂性要求的网站,例如“必须是 8 个字符长并且至少包含 2 个数字”。从安全的角度来看,这有什么真正的额外好处吗?
我认为,由于用户名被设计为标识符而不是秘密,因此这是一个不必要且令人讨厌的策略。这让我特别恼火,因为它被视为一种“安全”要求,它只提供了安全的假象,而牺牲了便利性。
除了枚举用户名可能有点困难之外,我想不出有什么切实的安全好处。一些通过默默无闻来实现安全性的做法,我认为这样做的缺点是要求您的用户必须写下他们的用户名才能记住它,这可能会破坏复杂用户名的目的。
另一方面,我不确定使用像 KeePass 这样的密钥库有多普遍。有点让记住用户名无关紧要。
该要求背后的原因可能是阻止用户重复使用来自另一个系统的用户名和密码。
我敢打赌,这个要求是为了降低用户名冲突的发生率,因为这样的冲突会触发用户支持(用户尝试了他的名字,但这个名字已经被占用了,用户不明白并且给网站管理员打电话/发电子邮件)。那么这个需求被称为安全需求,这样用户就会接受它。
是的,这些要求增加了安全性,这里有一个场景可以帮助它变得清晰(理想情况下)。
情景
Bob Jones 是 AwesomeCo 的首席执行官。他决定将他的用户名设为 bobJones(或任何其他不涉及数字的枚举,例如 bob.jones、bJones 等)。做功课的人发现这是一家卷入环境灾难的公司,想要报复。他的用户名很容易猜到,这降低了访问他的信息所需的复杂性。
现在通常围绕用户名的安全要求是它们不能包含您的名字、姓氏或中间名。现在结合密码,要求通常是您不能使用您的 SID(用户名)、名字、姓氏或中间名。从理论上讲,这应该使系统更难破解您的用户/密码组合,因为它们在某种程度上应该是互斥的。