我是编程新手,有点迷茫。我正在构建一个桌面应用程序,该应用程序在启动时提示用户登录,然后该应用程序连接到我的网站 mySQL 数据库并对其进行验证,如果找到用户,则会出现第二个 JFrame,用户现在可以使用程序。
我没有想到这一点,但现在我面临着有人反编译应用程序并获得对 mySQL 连接详细信息的访问权的问题。
这里是连接代码的精简版以供引用。
import java.sql.Connection;
import java.sql.DriverManager;
public class databaseConnection {
public static void main(String[] args) throws Exception {
getConnection();
}
public static Connection getConnection() throws Exception {
try {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/dbase";
String username = "root";
String password = "root";
Class.forName(driver);
Connection conn = DriverManager.getConnection(url,
username, password);
System.out.println("Connected.");
return conn;
} catch (Exception e) {
System.out.println(e);
}
return null;
}
}
有没有办法隐藏或加密 url、用户名和密码?我明白没有什么是绝对安全的,这只会让怀有恶意的人更难一点,但直接把信息留给任何人看似乎有点愚蠢。
谢谢
最佳答案
没有解决此问题的好方法,这就是为什么您看不到那么多桌面程序(不再)连接到中央数据库的原因。您的程序中包含的任何凭据都是可见的。当然,您可以使用任意多的时间来发明“安全方案”,但这不会改变它只是不安全的事实。
您基本上可以通过三种方式来避免这些问题。让你的应用程序成为一个网络应用程序,这样用户就无法访问代码,让你的用户使用自己的凭据设置自己的数据库(如果你希望所有用户能够相互交换信息,这显然无济于事)或者第三,编写一个后端层,使桌面客户端不直接连接到数据库。然后他们会向后端发送命令以执行数据库操作,您可以控制后端凭据以允许连接到您想要的人。
关于java - 加密数据库登录信息mySQL连接器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57848882/