我正在尋找一種方法從java.sql.Connection對象中獲取密碼。我知道DatabaseMetaData對象中有一個getUserName()方法,但不幸的是沒有相應的getPassword()方法。在Netbeans中使用調試器,我可以看到一個密碼字段,所以必須有一種方法來使用反射來獲取這些信息,但到目前爲止,我一直無法弄清楚。如何從java.sql.Connection對象中檢索密碼
2
A
回答
1
正如我所評論的,唯一的方法必須查看代碼。例如,對於使用最新驅動程序的MySQL(5.1.15)。你可以得到這樣的密碼:
public static void main(String[] args) throws Exception{
ConnectionImpl con = (ConnectionImpl) DriverManager.getConnection("jdbc:mysql://localhost:3908/mydb?user=edalorzo&password=mandrake");
System.out.println(con.getProperties().get("password"));
con.close();
}
但是爲此,你需要知道類層次結構及其實現細節。
其他數據庫很可能會有所不同。如果你的數據庫是開源的,比如MySQL,你可以知道內部結構的細節並找到獲取密碼的方法。
+0
這工作得很好,比我往下的反射路徑要好得多。 – Gillman 2011-04-13 00:23:32
2
由於用戶和密碼作爲映射傳遞到Driver,所以由JDBC的實施者決定。
知道密碼的一種方法是擴展驅動程序幷包含它。
class CustomDriver extends ImplementerDriver {
@Override
public Connection connect(String url, Properties info) throws SQLException {
super.connect(url, info);
// Extract password from info.
}
public String getPassword() {
....
}
}
0
您可以解析連接池參數的服務器XML配置文件,並從那裏獲取密碼。複雜的解決方案,但它的作品
相關問題
- 1. 如何從stdClass對象中檢索值?
- 2. 如何從內存中檢索對象
- 3. 如何從GTM dataLayer中檢索對象
- 4. 如何從數組中檢索對象?
- 5. 如何從Go http.Request中檢索對象?
- 6. 如何從JSON對象中檢索ArrayList?
- 7. 如何從NSMutableArray中檢索對象
- 8. 如何檢索對象的源代碼?
- 9. Grails的2.4.2 java.sql.Connection對象
- 10. 從對象中檢索值?
- 11. 如何在django中檢索密碼
- 12. 如何從ATL對象集合中檢索對象指針?
- 13. 如何從python對象檢索值?
- 14. 如何從jlist檢索對象列表
- 15. 如何從該對象檢索值
- 16. 如何從XML檢索對象
- 17. 如何從此對象檢索值?
- 18. 如何從SimpleXMLElement對象檢索值
- 19. 從kerberos keytab文件中檢索密碼
- 20. 如何檢索別名密碼密碼android密鑰庫
- 21. 如何從java.sql.Connection獲取UserName?
- 22. 如何從Ruby時區對象檢索時區代碼?
- 23. 檢索sha1加密密碼..
- 24. 如何從數據庫中檢索密碼
- 25. 如何從HTML表單中檢索密碼然後打印它
- 26. 如何使用password_verify()從數據庫中檢索密碼?
- 27. 檢索SOAP密碼
- 28. 如何檢索Google SDK密碼
- 29. 如何檢索oracle 11g的密碼?
- 30. 如何使用VbaDiff檢索VBA密碼?
這將是有趣的。正如你所指出的,我認爲這不可能通過公共API。也許在Driver實現或DriverManager的某個地方,如果它是開源的,你可以看看。我懷疑這是連接。 – 2011-04-12 00:31:49
這是我見過的最離奇的要求之一。此外,它有潛在的安全漏洞。 – 2011-04-12 01:43:46
所以,如果你已經看到調試器中的字段,爲什麼你不能使用反射? – jtahlborn 2011-04-12 03:08:55