即使电子邮件和电话交谈都被记录下来,在电子邮件数据库中搜索“密码”比搜索语音记录要容易几个数量级。
但是,最佳实践表明只有一个人应该知道帐户的密码,那就是拥有该帐户的人。管理员不应该知道它,服务器也不应该知道它(即散列密码)。
通常的做法是:如果密码最近(对于给定的最近值)过期,用户可以使用他们的旧密码,但在通过身份验证后(在登录之前),他们被迫更改密码,然后立即断开连接。如果密码在一段时间前已经过期,管理员可以将过期的密码标记为“最近过期”一小段时间——(例如 10 分钟)。管理员不需要知道这个密码是什么。如果用户忘记了密码,管理员可以发出一个短时间(例如 10 分钟)的密码,这也可以强制立即更改密码。
此外,如果用户在去年更改了自己的密码,他们应该免于更改(直到他们最后一次更改后正好 1 年)。
在大多数情况下,密码应该每年更改一次的理论也非常可疑 - 如果密码被泄露,通常会立即最大限度地利用它。仅给予攻击者“仅”6 个月的访问时间(平均而言)似乎毫无意义(或“仅”6 天)。这表明双因素身份验证,如果资源值得保护,则第二个因素每次都是唯一的(Google Authenticator、OTP、OPIE、质询-响应等)。
如果可以避免,管理员不应该知道用户的密码。如果需要,他们应该能够使用自己的 OWN 密码成为另一个用户,然后将其写入审核日志。如果有多个级别的“管理员”(即如果有人可以更改密码但不影响审核日志),这一点尤其重要。
轻微的混淆(例如音频、图像等的安全性)是危险的,因为它们会助长没有安全感的自满情绪。