2

我已将我的 JAVA EAR 提交给 Veracode 安全工具,并在以下代码中遇到密码明文存储问题:

ApplicationProperties   app = new ApplicationProperties(fileProp);
String sqlServerPassword = app.getAppProperty("sqlServerPassword");  
con = DriverManager.getConnection(sqlServerConnectString, sqlServerUserID, sqlServerPassword);  

在属性文件中,我存储了这个密码的值。
有人请帮我解决这个问题。

4

2 回答 2

1

既然您说您有一个企业应用程序(EAR),那么您将把它部署到一个应用程序服务器上。在企业应用程序中处理数据库连接的正常方式是让服务器将连接池作为资源来管理。然后,您的应用程序可以使用 JNDI 查找连接池并获得连接。

当您在服务器上配置连接池时,应用程序永远不需要知道其所有托管服务器端的详细信息(例如数据库服务器、用户名或密码)。安全性来自服务器上的内置访问控制机制。

阅读应用程序服务器的文档,可能会有具体说明告诉您如何将连接池配置为 JNDI 资源。

于 2013-04-23T09:03:30.353 回答
0

如果您的应用程序依赖 SQL 身份验证,则必须在配置文件中保护凭据。在将连接字符串存储到配置文件之前,使用受保护的配置提供程序对连接字符串进行加密。

看看下面的文章:

http://scribblejava.wordpress.com/2010/03/23/encrypt-username-and-password-for-jndi-in-tomcat-server-xml/

法比奥@fcerullo

于 2013-04-23T15:34:35.190 回答