PostgreSQL JDBC 42.3.2/42.2.25 安全性更新
發表於 2022-02-02,作者:JDBC Project
相關開放原始碼 安全性
已為 PostgreSQL JDBC 驅動程式建立安全性建議。該驅動程式提供基於通過 authenticationPluginClassName、sslhostnameverifier、socketFactory、sslfactory、sslpasswordcallback 連線屬性提供的類別名稱來實例化外掛程式實例的功能。
但是,驅動程式在實例化類別之前,並未驗證該類別是否實作了預期的介面。
修復方法是確保該類別實作了預期的介面。此問題已在 42.2.25 和 42.3.2 版本中修復。此外,以下是 42.3.2 中的一些變更,完整的變更日誌可以在此處找到
已變更
- perf: 在連線上讀取 in_hot_standby GUC PR #2334
- fix: 如果 gssEncryption 是 prefer 或 require,我們將詢問伺服器是否支援 GSS 加密 PR #2396 移除詢問伺服器是否支援 GSS 加密之前在快取中擁有票證的需求
- fix: 為 #getBoolean BIT(>1) 擲回 SQLException PR #2386 在對 BIT(>1) 呼叫 CallableStatement#getBoolean(int) 時擲回 SQLException,而不是 ClassCastException。
- perf: 在連線上讀取 in_hot_standby GUC PR #2334
- 將憑證金鑰類型檢查新增至 chooseClientAlias PR #2417
已新增
- feat: 新增 authenticationPluginClassName 選項以在執行時提供密碼。新增 authenticationPluginClassName 連線屬性,允許最終使用者指定一個類別,該類別將在執行時提供連線密碼。實作該介面的使用者必須確保方法的每次調用都提供一個新的 char[] 陣列,因為驅動程式在使用後會將內容填寫為零。驅動程式內的呼叫點已更新為盡可能直接使用 char[]。這包括直接在 GSS 驗證程式碼路徑中使用,這些路徑在內部已經將 String 密碼轉換為 char[] 以供內部使用。這允許配置一個必須在執行時產生或定期變更的密碼的連線。PR #2369 原始問題 Issue #2102
- feat: 新增 tcpNoDelay 選項 PR #2341 修復 Issue #2324
- feat: pg_service.conf 和 .pgpass 支援 (jdbc:postgresql://?service=my-service) PR #2260 修復 Issue #2278
已修復
- 在 PgStatement 和 PgResultset 中使用本機 TimestampUtil 以實現執行緒安全 PR #2291 修復 Issue #921 同步共享日曆的修改
- fix: PgObject isNull() 報告相反的結果 修復 Issue #2411 PR #2414
- fix: Windows 上的預設檔案名稱是 ".pg_service.conf" (而不是 "pg_service.conf") PR #2398 修復 Issue #2278
- fix: 如果已設定 fetchsize,則在讀取後不要關閉 refcursor 修復 Issue #2227 PR #2371
- fix: 重構 gss 驗證以使用主體名稱來取得憑證 修復 Issue #2235 PR #2352
- fix: 以大寫形式傳回 getIndexInfo metadata 欄位 PR #2368
- fix: ConnectionFactoryImpl#tryConnect 中的連線洩漏 PR #2350 Issue #2351
- fix: 修復 IS_AUTOGENERATED 旗標 PR #2348
- fix: Windows 的剖析服務檔案測試 PR #2347
- fix: 規格指出在已關閉的連線上呼叫 close() 是 noop。PR #2345 修復 Issue #2300
- fix: 將微秒精度新增到在 sql TIME(6) 上呼叫的 getTimestamp()。目前,「當透過 resultSet.getTimestamp() 擷取 TIME(6) 類型的值時,僅保留 ms 精度,微秒小數位數將遺失。」此變更將在使用 TIME(6) 呼叫 .getTimestamp() 時保留微秒精度。PR #2181 關閉 Issue #1537
- test: 具體化檢視權限 PR #2209 新增和捨棄具體化檢視 新增至 TestUtil 以及 DatabaseMetaData 設定和拆解 修復 Issue #2060
- fix: connect.md 中的錯字 PR #2338
OutOfMemoryException
=> OutOfMemoryError
- fix: 在 PgStatement 和 PgResultset 中使用本機 TimestampUtil 以實現執行緒安全。TimestampUtil 不是執行緒安全的。當多個執行緒使用一個連線的 ResultSet 時,它會引發例外。 PR #2291 修復 Issue #921 如果 PgStatement 和 PgResultSet 使用它們自己的 TimestampUtil,則不需要同步。
- fix: CONTRIBUTING.md 中的錯字 PR #2332 seccion => section
PostgreSQL JDBC 團隊感謝所有參與此版本的人!
JDBC 團隊