历史版本。 PostgreSQL 12 已结束支持。 2024-11-21. 请参阅 当前版本手册.
F.23. passwordcheck #
每当通过 CREATE ROLE 或 ALTER ROLE 设置用户密码时,passwordcheck 模块都会检查密码强度。如果密码被认为过弱,就会被拒绝,该命令也会因错误而终止。
要启用该模块,请将'$libdir/passwordcheck' 加入
postgresql.conf 中的 shared_preload_libraries,然后重启服务器。
可以通过修改源代码使该模块适应实际需求。例如,可以使用
CrackLib 来检查密码,这只需要在 Makefile 中取消两行注释并重新构建该模块。(由于许可原因,我们不能默认包含 CrackLib。)如果不使用 CrackLib,该模块会对密码强度施加一些简单规则,而这些规则也可以按需修改或扩展。
小心
为了防止未加密的密码通过网络传输、被写入服务器日志,或以其他方式被数据库管理员窃取,PostgreSQL 允许用户提供预加密密码。很多客户端程序都会利用这一能力,在将密码发送给服务器之前先行加密。
这就限制了 passwordcheck 模块的作用,因为在这种情况下,它只能尝试猜测密码。因此,如果安全要求很高,并不建议使用
passwordcheck。与其依赖数据库内部的密码,不如使用
GSSAPI 之类的外部认证方法(见第 20 章),那样更安全。
另外,也可以修改 passwordcheck 以拒绝预加密密码,但强迫用户以明文设置密码本身也会带来安全风险。