密码策略生成器
把密码规则转换为易读的策略、验证正则、带 pattern 和 passwordrules 的 HTML 输入框以及 JSON 配置。含 NIST 和 PCI 预设。
0 = 不限最大长度
在大写、小写、数字、符号四类中(0 = 关闭)。
0 = 关闭
0 = 关闭
传统的复杂度规则。现代指南(NIST、OWASP)建议改用长度要求和黑名单,因为这些规则会促使人们使用 "Password1!" 这类可预测的模式。
务必同时在服务器端执行该策略。正则按 UTF-16 码元计数,“符号”指 A–Z、a–z、0–9 以外的任何字符。
什么是 密码策略生成器?
只需定义一次密码要求,就能得到你需要的所有格式:给用户看的易读策略文本、用于验证的正则表达式、带有 pattern 和 Apple passwordrules 属性的现成 HTML 密码输入框,以及 JSON 配置。
如何使用 密码策略生成器
- 从策略预设开始,或自行设置规则。
- 复制策略文本,用于你的文档或注册页面。
- 复制正则表达式或 HTML 输入框,用于客户端验证。
- 把 JSON 输出用作后端的配置。
示例
Classic preset: 8–64 characters, upper, lower, digit, symbol
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[^A-Za-z0-9]).{8,64}$
passwordrules: minlength: 8; maxlength: 64; required: upper; required: lower; required: digit; required: special; allowed: ascii-printable; 经典预设:8–64 个字符,包含大写、小写、数字和符号。
何时使用 密码策略生成器
适用于实现或记录密码策略。务必在服务器上也执行同样的规则;客户端正则只用于给用户提供反馈。
密码策略生成器 的工作原理
必需的字符类型会变成 (?=.*[A-Z]) 这样的前瞻断言;“4 个类别中至少 N 个”变成所有 N 个前瞻组合的分支;“连续相同字符不超过 N 个”变成 (?!.*(.)\1{N});长度变成 .{min,max}(不允许空格时为 \S)。passwordrules 的值遵循 Apple 的密码规则语法(minlength、maxlength、required、allowed、max-consecutive)。正则无法表达的规则(不重复字符、黑名单、用户名)会单独列出。
常见用例
- 为注册表单生成验证正则
- 添加 passwordrules,让 Safari 生成符合要求的密码
- 编写面向用户的密码要求
- 通过 JSON 保持前后端规则同步
安全提示
客户端验证可以被绕过。请在服务器上执行策略,并使用 Argon2id、scrypt 或 bcrypt 对密码进行哈希。
常见问题
输出支持哪些正则风格?
JavaScript、PCRE(PHP)、Python re 和 Java 都支持所用的前瞻语法。
passwordrules 属性是什么?
Apple 提出的一个 HTML 属性,告诉 Safari 和 iCloud 钥匙串某网站接受哪些密码,使生成的密码能通过你的验证。
为什么正则不能检查黑名单?
对照成千上万个常见或已泄露的密码进行检查,需要在服务器端查找,而不是用模式匹配。