强密码强制实施和Passfilt.dll

可以使用系统管理工具启用强密码强制。 如果启用了系统管理策略,则创建或更改密码时必须满足以下最低要求:

  • 密码不能包含用户的 samAccountName (帐户名) 值或整个 displayName (全名值) 。 这两个检查不区分大小写。
  • 将完全检查 samAccountName,只是为了确定它是否是密码的一部分。 如果 samAccountName 的长度小于三个字符,则跳过此检查。
  • displayName 将分析分隔符:逗号、句点、短划线或连字符、下划线、空格、磅号和制表符。 如果找到这些分隔符中的任何一个,则会拆分 displayName,并且确认所有分析部分 (令牌) 不包含在密码中。 将忽略少于三个字符的标记,并且不会检查令牌的子字符串。 例如,名称“Erin M. Hagens”拆分为三个标记:“Erin”、“M”和“Hagens”。 由于第二个标记只有一个字符长,因此将被忽略。 因此,此用户的密码不能包含“erin”或“hagens”作为密码中任何位置的子字符串。
  • 密码必须包含以下五个类别中的三个中的字符。
字符类别 示例
欧洲语言的大写字母 (A 到 Z,带有音调符号、希腊文和西里尔文字符)
A、B、C、Z
欧洲语言的小写字母 (到 z,尖锐的,带有音调符号、希腊文和西里尔文字符)
a、b、c、z
10 个基本数字 (0 - 9)
0, 1, 2, 9
非字母数字字符 (特殊字符)
$,!,%,^, () {}[];:<>?
归类为字母字符但不大写或小写的任何 Unicode 字符。 这包括来自亚洲语言的 Unicode 字符。

启用强密码强制

  1. 在管理控制台中,找到 “本地安全策略”。
  2. 选择“ 帐户策略”,然后选择“ 密码策略”。
  3. 启用 密码必须满足复杂性要求 设置。

注意

给定字符只能满足一个类别。 GetStringTypeW 函数用于测试密码中的每个字符是大写、小写还是字母数字。