选择 打开 改范围 完整检索页
受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10
当前 PostgreSQL 版本不在支持生命周期内。
您可以参阅当前版本的对应页面,或其他在上面列出的活跃大版本。

F.23. passwordcheck #

每当通过 CREATE ROLEALTER ROLE 设置用户密码时, passwordcheck 模块都会检查密码强度。如果密码被认为过弱,就会被拒绝, 该命令也会因错误而终止。

要启用该模块,请将 '$libdir/passwordcheck' 加入 postgresql.conf 中的 shared_preload_libraries, 然后重启服务器。

可以通过修改源代码使该模块适应你的需求。例如,可以使用 CrackLib 来检查密码, 这只需要在 Makefile 中取消两行注释并重新构建该模块。 (由于许可原因,我们不能默认包含 CrackLib。) 如果不使用 CrackLib,该模块会对密码强度施加一些简单规则, 而这些规则也可以按需修改或扩展。

Caution

为了防止未加密的密码通过网络传输、被写入服务器日志,或以其他方式被数据库管理员窃取, PostgreSQL允许用户提供预加密密码。 很多客户端程序都会利用这一能力,在将密码发送给服务器之前先行加密。

这就限制了 passwordcheck 模块的作用,因为在这种情况下, 它只能尝试猜测密码。因此,如果安全要求很高,并不建议使用 passwordcheck。与其依赖数据库内部的密码,不如使用 GSSAPI 之类的外部认证方法(见 Chapter 20), 那样更安全。

另外,也可以修改 passwordcheck 以拒绝预加密密码, 但强迫用户以明文设置密码本身也会带来安全风险。