3

我正在为我设置的数据库做前端工作,我想知道如果我只使用这段代码,如果有人在嗅探,我的密码和用户名会以纯文本形式显示吗?

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);
}
4

2 回答 2

4

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

您还可以在其客户端-服务器协议文档中查看 MySQL 提供的各种类型的身份验证(包括非常不安全的明文密码)。

我严重怀疑任何供应商生产的数据库驱动程序都会通过网络以明文形式发送您的密码数据。至少我知道 MySQL 和 PosgreSQL JDBC 驱动程序不会这样做。例如,PostgreSQL 会生成密码的哈希值并发送。

于 2012-09-17T04:11:17.080 回答
1

JDBC 只是一个 API。每个 JDBC 驱动程序实现都是不同的,因此这取决于您使用的特定驱动程序。

于 2012-09-17T04:02:01.030 回答