密码强度现在就是一切,它们迫使你想出带有数字、特殊字符、大写字母等等的密码。除了成为可用性的噩梦(即使我作为开发人员也讨厌网站需要复杂的密码),拥有强密码(用于网站身份验证)的实际好处是什么?以下是正确处理身份验证的系统的先决条件:
- 使用 bcrypt(或至少使用 salt+hash)存储密码 - 当攻击者获取数据库时,很难找到原始密码
- 锁定随后的密码尝试,冷却时间越来越长 - 没有通过网站的暴力破解
密码强度现在就是一切,它们迫使你想出带有数字、特殊字符、大写字母等等的密码。除了成为可用性的噩梦(即使我作为开发人员也讨厌网站需要复杂的密码),拥有强密码(用于网站身份验证)的实际好处是什么?以下是正确处理身份验证的系统的先决条件:
因为,正如 LinkedIn 和其他最近的密码泄露所揭示的那样,网站最常见的密码仍然是“密码”、“上帝”、“123456”等。所以你可以用最常见的密码列表进行暴力破解。尽管如此,您仍然可以禁止这些密码,或者要求使用长密码——因为可能的组合会随着长度呈指数增长,并且要求长密码比要求“强”密码来防止暴力破解要好。但是太多的人遵循他们认为是最佳实践的方法而不质疑它,所以 - 确实是个好问题!
因为没有人因为创建密码强度要求而被解雇。对于管理员来说,这基本上是一种低风险的方法,尽管这些限制对用户来说非常烦人并且几乎没有提供真正的安全性。
以下是来自 xkcd 的一些相关插图!所谓的强实际上是弱的,因为人们是人类,不会付出努力,另一个是懒惰,即使他们使用“强”密码,它也会在任何地方重复使用。你赢不了!
和
如果您在没有强度要求的情况下允许使用短密码,那么您将让自己对某人对用户名进行彩虹式攻击保持开放。例如:
admin,password
fred,password
bob,password
...keep doing this until the cooldown window expires...
admin,god
fred,god
bob,god
...repeat as needed...
许多系统甚至不会将这种模式标记为问题,而且我从未见过如果您通过僵尸网络进行并适当限制它会真正捕获它的系统。