登录
F.26. passwordcheck — 验证密码强度#
passwordcheck
模块在使用CREATE ROLE或ALTER ROLE设置用户密码时,会检查用户的密码。如果密码被认为太弱,它将被拒绝,并且命令将终止并显示错误。
要启用此模块,请将'$libdir/passwordcheck'
添加到postgresql.conf
中的shared_preload_libraries,然后重新启动服务器。
您可以通过更改源代码来调整此模块以满足您的需求。例如,您可以使用CrackLib来检查密码 — 这只需要取消Makefile
中的两行注释并重新构建模块即可。(由于许可原因,我们无法默认包含CrackLib。)如果没有CrackLib,该模块将强制执行一些简单的密码强度规则,您可以根据需要修改或扩展这些规则。
警告
为了防止未加密的密码通过网络发送、写入服务器日志或被数据库管理员窃取,PostgreSQL允许用户提供预加密密码。许多客户端程序利用此功能并在将密码发送到服务器之前对其进行加密。
这限制了passwordcheck
模块的实用性,因为在这种情况下它只能尝试猜测密码。因此,如果您的安全要求很高,不建议使用passwordcheck
。使用外部身份验证方法(如 GSSAPI,请参阅第 21 章)比依赖数据库中的密码更安全。
或者,您可以修改passwordcheck
以拒绝预加密的密码,但强制用户以明文设置其密码会带来其自身的安全风险。