安全地从Java连接到Mysql?

时间:2013-08-25 01:14:53

标签: java mysql

您好我很好奇如何安全地从java链接到mysql。我唯一能弄清楚的是如何保持密码不受纯文本的影响!任何帮助都很棒。

4 个答案:

答案 0 :(得分:6)

MySQL Connector / J文档的

This section解释了如何使用SSL和客户端证书保护JDBC连接。这样,您根本不需要使用密码。

答案 1 :(得分:1)

使用JDBC进行数据库连接。至于

  

将密码保留为纯文本

如果在某处有明文密码,如何连接到它?我会说只使用生成的128位密码,然后加密那个。也许你的程序加载的属性文件不是项目的一部分,然后从那里获取它?

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

答案 2 :(得分:0)

查看MessageDigest Class的文档:

  

此MessageDigest类为应用程序提供了a的功能   消息摘要算法,例如MD5或SHA。消息摘要是   安全的单向散列函数,可以获取任意大小的数据   输出固定长度的哈希值。

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

答案 3 :(得分:-1)

嗯,那不是那么难。只需下载MYSQL Connector,将其添加到您的路径,然后在其上触发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