java - JDBC 会做些什么来保护我的密码和用户名不被嗅探吗?

标签 java mysql security 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);
}

最佳答案

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

您还可以在 client-server protocol documentation 查看 MySQL 提供的各种类型的身份验证(包括非常不安全的明文密码)。 .

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

关于java - JDBC 会做些什么来保护我的密码和用户名不被嗅探吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12452928/

相关文章:

java - 特定字段的可空属性值的 Jaxb 自定义

c# - 如何将安全 header 添加到 SOAP 消息?

linux - 验证 NAT 后面的设备公共(public) IP 地址的可靠(加密)方式

mysql - 根据第二列使用同一列的最小值更新列

python - 使用 Python 和 pandas 无法正确填充 MySQL 计数器列

c# - 如何避免使用反射访问类的私有(private)成员?

java - 从 API 获取数据

java - 列出时未获取 JPA 实体持久字段

java - kmeans中的ArrayOutofBoundsException,在hadoop上运行时

mysql - 如何使用两个SQL请求(mysql)计算平均数