从Java安全地连接到Mysql?

3

你好,我想知道如何在Java中安全地连接到MySQL。唯一的问题是如何避免密码以纯文本形式出现!非常感谢您的帮助。


1
“我很好奇如何从Java安全地链接到MySQL。” 来自哪里?客户端桌面应用程序,Servlet,还是Shoebox? - Andrew Thompson
它将连接一个Java插件到我们的私有MySQL服务器,并不断进行通信。 - BeastlyJman
4个回答

6
这篇MySQL Connector/J 8.0文档的章节讲解了如何使用SSL和客户端证书保护JDBC连接,这样就不需要使用密码了。请点击这里查看详细信息。

1

使用 JDBC 进行数据库连接。就如

保护密码不被以明文形式存储。

如果密码以明文形式存在,你将如何连接它?我建议只使用生成的128位密码,并加密 那个 密码。也许可以有一个属性文件,你的程序从中加载,该文件不是项目的一部分,然后从那里获取密码?

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


0

请查看MessageDigest类的文档:

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

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


-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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接