强密码强制和 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 函数用于测试密码中的每个字符是大写、小写还是字母数字。