我正在为我设置的数据库开发前端,我想知道如果我只使用这段代码,如果有人在嗅探,我的密码和用户名是否会以纯文本形式显示?
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);
}
最佳答案
这取决于 JDBC 驱动程序的实现方式,MySQL JDBC 驱动程序不会以明文形式传输您的密码。您可以在 MysqlIO 处看到这种情况发生类(查找 changeUser
方法)。
您还可以在 client-server protocol documentation 查看 MySQL 提供的各种类型的身份验证(包括非常不安全的明文密码)。 .
我严重怀疑任何供应商生产的数据库驱动程序都会通过网络以明文形式发送您的密码数据。至少我知道 MySQL 和 PosgreSQL JDBC 驱动程序不会这样做。例如,PostgreSQL 将生成您密码的哈希值并发送。
关于java - JDBC 会做些什么来保护我的密码和用户名不被嗅探吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12452928/