如何在Spring MVC Web应用程序中安全地存储数据库凭据?

Jam*_*ams 3 spring tomcat spring-mvc spring-data

我有一个需要连接到数据库的Spring MVC Web应用程序,并且数据源凭证当前(正在开发中)保存在应用程序上下文配置文件中,即在WEB-INF\spring\application_context.xml中,如下所示:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="username" value="my_username" />
    <property name="password" value="my_password" />
    <property name="url" value="my_datasource_url" />
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
</bean>
Run Code Online (Sandbox Code Playgroud)

在将此应用程序部署到面向Tomcat服务器的公共服务器之前,我想确保我不会让这些数据库凭据对全世界可见或者由狡猾的黑客轻易发现.我可以保持原样,即纯文本和WEB-INF下的XML文件吗?如果没有,那么这种事情是否有最好的做法?

在此先感谢您的帮助.

Tom*_*icz 5

WEB-INF根据定义,存储在文件夹中的文件无法从外部世界访问.例如,如果你把JSP文件放在那里没有用户可以直接访问该文件 - 例如可以通过从另一个JSP导入或包含它来引用它.

这就是说你的凭据是安全的,但在硬盘中对它们进行硬编码并不是一个好习惯applicationContext.xml.您是否将这些凭据推送到源代码管理中?

最安全的方法是.properties在硬盘上的某个外部文件中提取敏感且频繁更改的配置.Spring完全能够读取.properties文件.