Java FindBugs密码问题

Java FindBugs密码问题,java,findbugs,programmers-notepad,Java,Findbugs,Programmers Notepad,我运行了FindBugs,这是第3行出现的错误: ie.lyit.flight.Changeadd$3.actionPerformed(ActionEvent) 此代码使用硬编码的恒定密码创建数据库连接。任何可以访问源代码或编译代码的人都可以轻松地学习密码 排名:吓人(7),自信:正常 模式:DMI\u常量\u DB\u密码 类型:Dm,类别:安全(安全) 我想知道是否有人知道如何消除这个bug,以及我将如何去做?代码分析工具在寻找最佳实践(或违反最佳实践)的同时,检查代码中的任何循环希望 在开

我运行了FindBugs,这是第3行出现的错误:

ie.lyit.flight.Changeadd$3.actionPerformed(ActionEvent)

此代码使用硬编码的恒定密码创建数据库连接。任何可以访问源代码或编译代码的人都可以轻松地学习密码

排名:吓人(7),自信:正常 模式:DMI\u常量\u DB\u密码 类型:Dm,类别:安全(安全)


我想知道是否有人知道如何消除这个bug,以及我将如何去做?

代码分析工具在寻找最佳实践(或违反最佳实践)的同时,检查代码中的任何循环希望


在开发过程中,您可以忽略此类警告,但是的,一旦您完成了业务逻辑,应用最佳实践总是很好的—在这种情况下,请从配置或属性文件中读取密码。

如果您使用jtd连接数据库,则无需为连接提供用户名和密码。请尝试下面的代码-

try {
    Class.forName(driver);
    con = DriverManager.getConnection(url + db, user, pass);
    PreparedStatement st = con.prepareStatement(
        "INSERT INTO menu(menu.menuID,menu.name,menu.info,menu.price) values(?,?,?,?)");
    st.setString(1, value1);
    st.setString(2, value2);
    st.setString(3, value3);
    st.setString(4, value4);
    st.executeUpdate();
    JOptionPane.showMessageDialog(p1, "Data is successfully inserted into database.");
    con.close();
} catch (Exception e) {
    JOptionPane.showMessageDialog(p1,
            "Error in submitting data!");
}

在我的例子中,master是数据库名。只需将其替换为您的数据库名。

这只是告诉您,密码不应直接存储在应用程序的源代码中,因为它通常是共享的,而不是加密的。 改用一些外部源,最好不要存储任何密码,只存储密码哈希

您还可以查看:


您的代码不包括FindBugs compaints about一行。
pass
在哪里定义?看看,我知道这一点,但这正是我在编写代码时遇到的困难。我喜欢对密码进行加密,这样在查看密码时没有人能看到字母。。太棒了!非常感谢你Yash:)
            Connection conn = null;
            String url = "jdbc:jtds:sqlserver://" +serverName+ "/" +"master";
            String driver = "net.sourceforge.jtds.jdbc.Driver";
            Class.forName(driver);
            conn = DriverManager.getConnection(url);