我正在为我已设置的数据库开发一个前端,我想知道我是否只使用此代码,如果有人在嗅探,我的密码和用户名是否以纯文本显示?
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);
}
答案 0 :(得分:4)
这取决于JDBC驱动程序的实现方式,MySQL JDBC驱动程序不会以明文形式传输您的密码。您可以在MysqlIO课程中看到这种情况(查找changeUser
方法)。
您还可以在client-server protocol documentation看到MySQL提供的各种类型的身份验证(包括线上非常不安全的明文密码)。
我严重怀疑任何供应商生成的数据库驱动程序会将您的密码数据作为明文通过网络发送。至少我知道MySQL和PosgreSQL JDBC驱动程序不会这样做。例如,PostgreSQL将生成密码的哈希并发送它。
答案 1 :(得分:1)
JDBC只是一个API。每个JDBC驱动程序实现都不同,因此这取决于您使用的特定驱动程序。