我正在创建一个注册表,需要至少包含 1 个特殊字符的密码。 Chrome 密码管理器不建议使用包含特殊字符的密码,因此验证失败。我希望密码管理员能够知道密码的要求是什么。我已阅读this SO Question并尝试使用“pattern”属性,但我遇到了评论中描述的相同问题,只有“maxlength”似乎有任何效果,“pattern”指定的任何内容都被忽略。
我如何告诉密码管理器如何建议有效密码?
目前,还没有标准/惯例能够以足够实用的方式向浏览器或密码管理器传达密码规则以生成密码。
最好的方法是使用您可用的属性,例如
minlength
、maxlength
和 pattern
,并希望外部工具能够利用它。
虽然对于
pattern
来说,情况更复杂。已经有一些工具可以根据模式生成文本,但根据我的经验,它们往往不太可靠,尤其是在前瞻/后瞻方面。
例如,这是一个简单的模式,假设我们仅接受完全匹配,则密码只能是一个字符,并且必须包含特殊字符(或重音字符):
(?=.*[^A-Za-z\d].*).
Regex Text Generator 使用此模式生成
S
,但 Regex101 显示它不匹配。 (Regex101 哪个是正确的!)
目前最好的解决方案是在您的网站上创建一个专用按钮,用于生成您知道符合密码规则的密码。
这就是为什么不再推荐复杂的密码规则的原因之一,重要的是最小密码长度和对最常用密码的检查(尽管最小长度已经排除了大多数众所周知的密码)。
除了使用密码管理器/方案进行推断之外,如果规则过于繁琐(例如“Password#”),用户通常会使用不太安全的密码,而不是更强的密码。长密码短语可以被用户轻松记住,但复杂的密码会立即忘记(除非它们存储在密码管理器中,而密码管理器不需要这样的规则来生成安全密码......)。