我已将JAVA EAR提交给Veracode Security工具,并在以下代码中遇到了明文密码存储问题:
ApplicationProperties app = new ApplicationProperties(fileProp);
String sqlServerPassword = app.getAppProperty("sqlServerPassword");
con = DriverManager.getConnection(sqlServerConnectString, sqlServerUserID, sqlServerPassword);
在属性文件中,我存储了此密码的值 有人请帮我解决这个问题。
答案 0 :(得分:1)
由于您说您拥有企业应用程序(EAR),因此您将要将其部署到应用程序服务器。在企业应用程序中处理数据库连接的常规方法是让服务器将连接池作为资源进行管理。然后,您的应用程序可以使用JNDI查找连接池并获得连接。
在服务器上配置连接池时,应用程序永远不需要知道其所有受管服务器端的详细信息(例如数据库服务器,用户名或密码)。安全性来自服务器上的内置访问控制机制。
阅读应用程序服务器的文档,可能会有特定的说明告诉您如何将连接池配置为JNDI资源。
答案 1 :(得分:0)
如果您的应用程序依赖于SQL身份验证,则必须在配置文件中保护凭据。在将连接字符串存储在配置文件中之前,请使用受保护的配置提供程序对其进行加密。
查看以下文章:
的Fabio @fcerullo