如何从使用该程序的人隐藏MySQL数据库的密码

Bra*_*iak 4 java mysql sql sql-server jdbc

我创建了一个带有JDBC的java程序,它成功连接到我的计算机服务器的MySQL数据库,如下所示:

    try
    {
        // The newInstance() call is a work around for some
        // broken Java implementations

        Class.forName("com.mysql.jdbc.Driver").newInstance();
    }
    catch (Exception ex)
    {
        // handle the error
    }

    try
    {
        conn = DriverManager.getConnection(("jdbc:mysql://191.168.1.15:3306/databasename"), "username", "password");

        // Do something with the Connection
    }
    catch (SQLException ex)
    {
        // handle any errors
        System.out.println("SQLException: " + ex.getMessage());
        System.out.println("SQLState: " + ex.getSQLState());
        System.out.println("VendorError: " + ex.getErrorCode());
    }
Run Code Online (Sandbox Code Playgroud)

但是,如果有人想要找出密码,那么使用任何java反编译器都会非常简单.我怎么能阻止他们找到密码或用户名呢?

Mar*_*ers 9

当您让用户直接访问您的数据库时,您必须记住您已授予他们直接访问您的数据库的权限.你不能改变它.没有任何加密或模糊处理可以使他们有权访问您的数据库.

所以你需要考虑,你真的希望他们能够访问你的数据库吗?

  • 如果您确实要授予数据库访问权限,请确保正确设置权限.例如,如果他们只需要读取权限,请确保您提供给他们的用户只具有读取权限.

  • 如果您实际上并不希望它们直接访问数据库,但您希望它们可以访问数据, 那么根本不要将数据库密码放在程序.例如,您可能希望在数据库前设置Web服务,并让用户查询Web服务.Web服务将具有数据库密码,但您的用户不会.