3

您好,我很好奇如何安全地从 java 链接到 mysql。我唯一想不通的是如何使密码远离纯文本!任何帮助都很棒。

4

4 回答 4

6

MySQL Connector/J 8.0 文档的这一部分解释了如何使用 SSL 和客户端证书来保护 JDBC 连接。这样,您根本不需要使用密码。

于 2013-08-25T01:37:39.483 回答
1

使用JDBC进行数据库连接。据,直到...为止

保持密码不是纯文本

如果某处有纯文本密码,如何连接它?我想说只使用生成的 128 位密码,然后对其进行加密也许有一个您的程序加载的属性文件不是项目的一部分,然后从那里获取它?

另一种选择只是使用 SSH 身份验证,这将完全绕过密码。

于 2013-08-25T01:22:36.417 回答
0

查看MessageDigest 类的文档:

此 MessageDigest 类为应用程序提供消息摘要算法的功能,例如 MD5 或 SHA。消息摘要是一种安全的单向散列函数,它采用任意大小的数据并输出固定长度的散列值。

调用getInstance("MD5")以获取您可以使用的 MD5 消息摘要。

于 2013-08-25T01:27:53.497 回答
-1

好吧,这并不是那么难。只需下载 MYSQL 连接器,将其添加到您的路径,然后在其上触发 PreparedStatement,如下所示:

Class.forName("com.mysql.jdbc.Driver");
Connection connect = DriverManager
      .getConnection("jdbc:mysql://localhost/dbname?"
          + "user=myusername&password=mypassword");
PreparedStatement preparedStatement = connect
      .prepareStatement("select * from employees");
 ResultSet resultSet = preparedStatement.executeQuery();

while (resultSet.next()) {
  //display text
}
preparedStatement.close();
connect.close();

然后,您可以执行类似 resultSet.getString() 之类的操作来获取所需的值,然后将它们转换为您想要的任何值,以防列太多并且表不稳定。如果不是,那么您可以使用 getInteger()、getDouble() 等。

在这里查看更多:

http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html http://docs.oracle.com/javase/6/docs/api/java/sql/ResultSet.html

现在,您可以使用散列策略来散列,即屏蔽您的密码。您可以将此代码放在另一个包中,您当前的代码链接以获取这些值。

https://crackstation.net/hashing-security.htm

于 2013-08-25T01:33:29.350 回答