2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0

F.24. passwordcheck — 驗證密碼強度 #

當用戶使用 CREATE ROLEALTER ROLE 設定密碼時,passwordcheck 模組會檢查使用者的密碼。如果密碼被認為太弱,它將被拒絕,並且命令將以錯誤終止。

要啟用此模組,請在 postgresql.conf 中的 shared_preload_libraries 中新增 '$libdir/passwordcheck',然後重新啟動伺服器。

您可以修改原始碼來根據您的需求調整此模組。例如,您可以使用 CrackLib 來檢查密碼——這隻需要取消註釋 Makefile 中的兩行並重新構建模組。(出於許可原因,我們無法預設包含 CrackLib。)在沒有 CrackLib 的情況下,該模組會強制執行一些簡單的密碼強度規則,您可以根據需要修改或擴充套件這些規則。

注意

為了防止未加密的密碼透過網路傳輸、寫入伺服器日誌或被資料庫管理員竊取,PostgreSQL 允許使用者提供預加密的密碼。許多客戶端程式利用此功能,在將密碼傳送到伺服器之前對其進行加密。

這限制了 passwordcheck 模組的實用性,因為在這種情況下,它只能嘗試猜測密碼。因此,如果您的安全要求很高,不建議使用 passwordcheck。使用外部身份驗證方法(例如 GSSAPI,參見 第 20 章)比依賴資料庫內的密碼更安全。

或者,您可以修改 passwordcheck 來拒絕預加密的密碼,但強制使用者以明文設定密碼會帶來其自身的安全風險。

F.24.1. 配置引數 #

passwordcheck.min_password_lengthinteger

可接受的最小密碼長度(以位元組為單位)。預設為 8。只有超級使用者可以更改此設定。

注意

如果使用者提供預加密密碼,此引數無效。

在常規使用中,此引數在 postgresql.conf 中設定,但超級使用者可以在其自己的會話中即時更改它。典型用法可能是

# postgresql.conf
passwordcheck.min_password_length = 12

提交更正

如果您在文件中看到任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用 此表單 報告文件問題。