我有一个Spring 4.1.1 Web应用程序。目前,数据源密码以明文形式存储在属性文件中。配置是:
<bean id="mainDataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
scope="singleton"
destroy-method="close">
<property name="driverClass"><value>${jdbc.driver}</value></property>
<property name="jdbcUrl"><value>${jdbc.url}</value></property>
<property name="user"><value>${jdbc.username}</value></property>
<property name="password"><value>${jdbc.password}</value></property>
.
.
.
</bean>
我的客户端不希望密码存储在属性文件中,或者更常见的是存储在服务器中。
理想的做法是让Spring显示一个安全的网页来输入数据库密码。
最大的问题是我需要访问db来初始化上下文以及应用程序工作所需的几乎所有内容。所以问题是:
是否可以让Spring在上下文初始化之前显示网页,以便用户可以输入数据源密码?也许通过过滤器或什么?
请注意在属性文件中加密密码或将其作为参数传递给Tomcat启动时不会这样做,因为它与在属性文件中使用它没有太大区别,因为它与安全性有关
答案 0 :(得分:0)
我最终做的是将数据库密码设置为环境变量,使用spring配置文件中的变量,然后在启动后删除变量。这很有效,似乎让客户满意。
要在spring_db.xml中读取环境变量,请使用此表达式,如果您使用的是Spring 3.0及以上版本:
<property name="password"><value>#{systemEnvironment['variable_name']}</value></property>