W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
有幾種基于口令的認(rèn)證方法。這些方法的過程類似,但是區(qū)別在于用戶口令如何被存放在服務(wù)器上以及客戶端提供的口令如何被通過連接發(fā)送。
scram-sha-256
方法scram-sha-256
按照RFC 7677中的描述執(zhí)行SCRAM-SHA-256認(rèn)證。它使用的是一種挑戰(zhàn)-響應(yīng)的方案,可以防止在不可信連接上對(duì)口令的嗅探并且支持在服務(wù)器上以一種加密哈希的方式存放口令,因此被認(rèn)為是安全的。
這是當(dāng)前提供的方法中最安全的一種,但是舊的客戶端庫不支持這種方法。
md5
方法md5
使用一種自定義的安全性較低的挑戰(zhàn)-響應(yīng)機(jī)制。它能防止口令嗅探并且防止口令在服務(wù)器上以明文存儲(chǔ),但是無法保護(hù)攻擊者想辦法從服務(wù)器上竊取了口令哈希的情況。此外,現(xiàn)在認(rèn)為MD5哈希算法對(duì)于確定攻擊已經(jīng)不再安全。
md5
方法不能與db_user_namespace特性一起使用。
為了簡化從md5
方法到較新的SCRAM方法的轉(zhuǎn)變,如果在pg_hba.conf
中指定了md5
但是用戶在服務(wù)器上的口令是為SCRAM(見下文)加密的,則將自動(dòng)選擇基于SCRAM的認(rèn)證。
password
方法password
以明文形式發(fā)送口令,因此它對(duì)于口令“嗅探”攻擊很脆弱。如果可能應(yīng)該盡量避免使用它。不過,如果連接被SSL加密保護(hù)著,那么可以安全地使用password
(不過如果依靠SSL,SSL證書認(rèn)證可能是更好的選擇)。
PostgreSQL數(shù)據(jù)庫口令獨(dú)立于操作系統(tǒng)用戶口令。每個(gè)數(shù)據(jù)庫用戶的口令被存儲(chǔ)在pg_authid
系統(tǒng)目錄中??诹羁梢杂?SQL 命令CREATE USER和ALTER ROLE管理,例如CREATE ROLE foo WITH LOGIN PASSWORD 'secret'
或者psql的\password
命令。如果沒有為一個(gè)用戶設(shè)置口令,那么存儲(chǔ)的口令為空并且對(duì)該用戶的口令認(rèn)證總會(huì)失敗。
不同的基于口令的認(rèn)證方法的可用性取決于用戶的口令在服務(wù)器上是如何被加密(或者更準(zhǔn)確地說是哈希)的。這由設(shè)置口令時(shí)的配置參數(shù)password_encryption控制。如果口令使用scram-sha-256
設(shè)置加密,那么它可以被用于認(rèn)證方法scram-sha-256
和
password
(但后一種情況中口令將以明文傳輸)。如上所釋,在這種情況下,指定的認(rèn)證方法md5
將自動(dòng)切換到使用scram-sha-256
方法。如果口令使用md5
設(shè)置加密,那么它僅能用于md5
和password
認(rèn)證方法說明(同樣,后一種情況中口令以明文傳輸)。(之前的PostgreSQL發(fā)行版支持在服務(wù)器上存儲(chǔ)明文口令?,F(xiàn)在已經(jīng)不可能了)。要檢查當(dāng)前存儲(chǔ)的口令哈希,可以參考系統(tǒng)目錄
pg_authid
。
要把現(xiàn)有的安裝從md5
升級(jí)到scram-sha-256
,可以在確保所有在用的客戶端已經(jīng)足以支持SCRAM之后,在postgresql.conf
中設(shè)置password_encryption = 'scram-sha-256'
,然后讓所有用戶設(shè)置新口令并且在
pg_hba.conf
中將認(rèn)證方法說明改為scram-sha-256
.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: