我的伺服器上有一個 PHP 腳本,需要存取資料庫使用者才能正常運作。編寫該 PHP 腳本的人告訴我們將以下內容加入 pg_hba.conf 中:
host all all 127.0.0.1/32 trust
這會給我帶來任何與安全相關的問題嗎?根據我的理解,該行的作用是允許本地託管的腳本無需密碼即可連接到 pgsql 。它是否正確 ?
該行的存在是否會導致在沒有資料庫密碼的情況下建立與我的資料庫的任何遠端連線?
答案1
是的,這是一個配置除了非常有限的特殊情況外,您通常應該避免:
相信
無條件允許連接。此方法允許任何可以連接到 PostgreSQL 資料庫伺服器的人以他們想要的任何 PostgreSQL 使用者身分登錄,而無需密碼或任何其他身份驗證。
[..]
信任身份驗證僅適用於 TCP/IP 連接,如果您信任每台允許透過指定信任的 pg_hba.conf 行連接到伺服器的電腦上的每個使用者。除了來自 localhost (127.0.0.1) 的連線之外,對任何 TCP/IP 連線使用信任很少是合理的。
請注意,允許在不提供任何密碼的情況下進行連線可能已經是這種情況,因為許多發行版預設會透過 unix 套接字作為連線使用者來驗證連線。這通常會導致系統使用者無需密碼www-data
即可使用postgres 使用者。www-data
檢查身份驗證配置的其餘部分,看看是否屬於這種情況。
推薦:設定密碼或憑證驗證,執行不是繼續選擇該trust
選項。
另請注意,僅將某些內容限制為環回位址通常不足以安全地保證防止外部存取。透過充當非預期代理的其他軟體來存取環回綁定服務的歷史由來已久。