2012-09-17 39 views
3

我正在为我建立了一个数据库的前端,我想知道如果我只是用这个代码将我的用户名和密码以纯文本格式显示出来,如果有一个人被嗅探?JDBC会做什么来保护我的密码和用户名免受嗅探?

String url = "jdbc:mysql://" + address + "/table"; 
String user = user_Name; 
String password = complete_Password; 

Connection conn = null; 
try { 
    conn = DriverManager.getConnection(url, user, password); 
    return conn; 
} catch (SQLException ex) { 
    System.out.println(ex); 
} 
+1

JDBC绝对不会做任何事情。也许MySQL确实(或者有一个选择)。 – Thilo

+0

只是想知道为什么你担心数据包嗅探?数据库服务器是否存在于互联网上? – Vikdor

+0

我决定做一些使用Wireshark嗅探并报告用户名和数据库,但它只是把本机密码输入密码 –

回答

4

这取决于JDBC驱动程序是如何实现的,MySQL JDBC驱动程序将不以明文形式发送密码。您可以在MysqlIO类中看到此情况(查找changeUser方法)。

您还可以看到各类认证MySQL提供的(包括非常不安全的明文密码在导线)在它的client-server protocol documentation

我严重怀疑任何厂商生产的数据库驱动程序在那里将您的密码发送数据通过线路以明文形式。至少我知道MySQL和PosgreSQL JDBC驱动程序不会这样做。例如,PostgreSQL将生成密码的散列并发送它。

1

JDBC仅仅是一个API。每个JDBC驱动程序的实现都是不同的,所以这将取决于您使用的特定驱动程序。

+0

我正在使用mysql-connector-java-5.1.22-bin我还没有找到任何东西,但这表明这可以做任何加密。 –