Java 如何解决CWE-259:硬编码密码的使用?

Java 如何解决CWE-259:硬编码密码的使用?,java,security,veracode,Java,Security,Veracode,我将我的应用程序EAR提交给Veracode安全扫描工具,并在以下代码段中发现此缺陷: private String url = "jdbc:mysql://localhost:8081/sql"; private String userName = "xyz"; private String password = "abc"; DriverManager.getConnection(url, user, password); // At this line i am getting t

我将我的应用程序EAR提交给Veracode安全扫描工具,并在以下代码段中发现此缺陷:

private String url = "jdbc:mysql://localhost:8081/sql";  
private String userName = "xyz";  
private String password = "abc";
DriverManager.getConnection(url, user, password); // At this line i am getting this flaw. 

有人请帮助我如何解决CWE-259:使用硬编码密码漏洞

出现硬编码密码漏洞的原因是,在代码段的第三行中,您在变量中硬编码密码。 这是因为您在源代码中存储敏感信息(用户名和密码),这是一个缺陷,因为您的源代码可以反编译

修复此漏洞的一种方法是将凭据存储在强加密文件中,或对凭据应用强单向散列并将这些散列存储在配置文件中


您可以在此处获得更多信息:

string Password=new Securestring(“123”).GetValue()。

class安全字符串{
私有只读字符串\u密码;
公共Securestring(字符串值){
_密码=值;
}
公共字符串GetValue(){
返回密码;
}

}
将密码作为命令行参数传递;或从配置文件读取;或者对加密的密码进行硬编码,然后解密并连接。@awashburn我无法想象硬编码密码是一个好主意,不管是否加密。如果有人算出了密码,您需要获得新版本的软件来更改密码。我会选择你的另一个选项,一个保护良好、可能加密的配置文件。@JoachimIsaksson这就是为什么它是最后一个选项,一个可能欺骗自动验证器的快速修复。从安全角度来看,这显然仍然不是一个好主意。我已经将连接到数据库的所有密码存储在属性文件中,然后在JAVA代码中获取这些值。我已将密码存储在属性文件中,然后在JAVA代码中获取该值。您能给我一个如何将哈希应用于数据库的示例吗凭据并将这些散列存储在配置文件中?有人请给出一些示例来解决此问题,以帮助我解决此问题。