您的前三个,加上“禁止类似于其他属性的密码”,是一个很好的策略。在几乎所有情况下,我个人都倾向于使用超过 8 个字符的密码,但那是因为我在不能(方便地)使用 LastPass 的任何地方都使用密码短语,并且看不出有任何理由允许使用 8 个字符这么短的密码;不过,显然世界上很多人都不同意我的观点。不过,我认为我没有看到“您不应该要求密码超过 8 个字符”的论点,只是 8 是您应该要求的最低级别(并且您可能需要更多)。
理想情况下,“禁止类似”规则也应扩展到站点属性(禁止站点名称或 URL,或突出的字符串);这将破坏使用“通用强密码+站点名称”的“每个站点唯一密码”方案的人,但这是一个糟糕的方案,无论如何都不应该支持。计算熵是一个有趣的概念,但我认为这不是一个好主意,除非站点非常敏感;阻止以前使用过的密码就足以防止您可能在那里看到的问题。
说到这一点,请随意对“已在其他地方使用/被破坏的阻止密码”这件事严格要求。我见过至少一个站点(其全部目的是验证其他服务,事实上!)决定只阻止 10,000 个最常见的密码,其中一吨比该站点的最小值短(例如,他们的“前 10,000" 列表包括一堆像 "11111" 之类的东西)或其他内容已经无效,因此有效的阻止列表是微小且明显的“规则律师”方法来处理他们的密码策略(容我们说,不在符合 NIST 建议),例如“P@ssw0rd”。
当然还有很多其他与身份验证相关的东西超出了“密码策略”的范围(如 MFA 或反暴力破解),但我确实想提一下其他(一对相关的)事物:不要对您的用户强制密码轮换(尽管显然他们必须是可能的),但如果有任何理由期望用户的密码被泄露(通过您的站点或第三方服务),您应该强制输入密码重置所有受影响的帐户。