问题报告 纠错本页面

F.23. passwordcheck

passwordcheck模块当用户设置CREATE ROLEALTER ROLE时,检查用户的密码。如果认为一个密码太弱, 那么将拒绝该密码并且命令将带有错误终止。

要启用这个模块,在postgresql.conf中添加 '$libdir/passwordcheck'shared_preload_libraries, 然后重启服务器。

你可以通过改变源码调整这个模块为你所需的样子。例如,你可以使用 CrackLib 检查密码—这只需要在Makefile文件中取消两行的注释, 并重新编译该模块。(因为许可证的原因,我们缺省不能包括CrackLib。) 没有CrackLib,该模块为密码强度强制一些简单的规则, 这些规则可以根据你认为合适的去修改或扩展。

小心

为了阻止未加密的口令通过网络发送出去、写到服务器日志或被数据库管理员偷走, PostgreSQL允许用户提供预先加密的口令。 许多客户端程序使用这个功能,并在发送到服务器之前加密口令。

这会限制passwordcheck模块的有用性,因为那种情况下只能尝试猜测口令。 因为这个原因,如果你的安全需求比较高,那么不建议使用passwordcheck。 使用一个额外的认证方法(如Kerberos)(参阅 第 19 章) 比依赖于数据库中的密码更安全。

或者,你可以修改passwordcheck拒绝预先加密的口令, 但是强制用户以明文的方式设置他们的口令有其自身的安全风险。