在我的应用程序中,我在src / main / tomcat / conf中有context.xml文件,其中包含以下信息:
<?xml version='1.0' encoding='utf-8'?>
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
name="jdbc/tomcatDataSource"
auth="Container"
type="javax.sql.DataSource"
initialSize="1"
maxActive="20"
maxIdle="3"
minIdle="1"
maxWait="5000"
username="postgres"
password="postgres"
driverClassName="org.postgresql.Driver"
validationQuery="SELECT 'OK'"
testWhileIdle="true"
testOnBorrow="true"
numTestsPerEvictionRun="5"
timeBetweenEvictionRunsMillis="30000"
minEvictableIdleTimeMillis="60000"
url="jdbc:postgresql://localhost:5432/tradebook_db" />
</Context>
每个开发人员在他的计算机上都有自己的postgres服务器,所以我猜这个用户名和密码的信息不应该放在git仓库中。将此context.xml文件添加到repo之后,我应该将它放在.gitignore中,以便每个开发人员都有他的特定用户和密码吗?或者还有其他方法可以防止将密码输入到存储库中的postgres服务器吗?
答案 0 :(得分:0)
您应始终将应用程序密码放在O / S环境变量(envvars)中。
您应遵循最小权限原则,并以自己的用户身份运行您的Web服务器。
在Tomcat中,您可以在配置文件中使用Ant样式的变量替换,例如:
<some-setting>${someJavaSystemProperty}</some-setting>
您无法直接使用OS环境变量(我认为......)。
要使用OS环境变量,您可以输入
set "CATALINA_OPTS=-DsomeJavaSystemProperty=%SOME_OS_ENVIRONMENT_VARIABLE%"
在bin/setenv.bat
中(或类似地在bin/setenv.sh
中为* nix)。您可能需要创建该文件。
http://tomcat.apache.org/tomcat-7.0-doc/config/
如果使用Spring,则可以使用context:property-placeholder直接在spring配置文件中使用OS envvars。