加密Web项目中配置文件中的密码
2013-09-03 13:43
246 查看
我们使用的项目经常是这个样子的:
这里会有一个致命的问题,如果有一个具备中间件服务器机器访问权限的人,看到了这个例如applicationContext.xml的文件,并且打开该文件,智商再低下的人也会知道数据库的用户名和密码是什么。这对于对安全有一定要求的行业是必须杜绝的,这个也是在一般技术面试中会问到的一个问题。那就让我们继续往下,解答这个问题吧!
首先,我们需要将配置文件抽取到property中来:
将上面的第一个代码修改为第二个代码,第一个类是负责抓取jdbc.properties中的属性并且填充到dataSource当中来,这样,我们就可以将所有的注意力都集中在jdbc.properties上了。
下面的问题是,如何将jdbc.properties变成一个看不明白的字符呢?我们只需要扩展PropertyPlaceholderConfigurer父类PropertyResourceConfigurer的解密方法convertProperty就可以了:
然后将上面完成的类替换配置文件中的PropertyPlaceholderConfigurer:
事实上,在我刚刚的Demo项目当中,里面的jdbc.properties里面的文件是如下内容的:
而实际上,真实的密码却是czw/czw
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" p:driverClassName="oracle.jdbc.driver.OracleDriver" p:url="jdbc:oracle:thin:@127.0.0.1:1523:orcl" p:username="czw" p:password="czw" />
这里会有一个致命的问题,如果有一个具备中间件服务器机器访问权限的人,看到了这个例如applicationContext.xml的文件,并且打开该文件,智商再低下的人也会知道数据库的用户名和密码是什么。这对于对安全有一定要求的行业是必须杜绝的,这个也是在一般技术面试中会问到的一个问题。那就让我们继续往下,解答这个问题吧!
首先,我们需要将配置文件抽取到property中来:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" p:location="classpath:jdbc.properties" p:fileEncoding="utf-8" /> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" p:driverClassName="${driverClassName}" p:url="${url}" p:username="${userName}" p:password="${password}" />
将上面的第一个代码修改为第二个代码,第一个类是负责抓取jdbc.properties中的属性并且填充到dataSource当中来,这样,我们就可以将所有的注意力都集中在jdbc.properties上了。
下面的问题是,如何将jdbc.properties变成一个看不明白的字符呢?我们只需要扩展PropertyPlaceholderConfigurer父类PropertyResourceConfigurer的解密方法convertProperty就可以了:
package com.cardDemo.commonUtil; import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer; public class ConvertPwdPropertyConfigurer extends PropertyPlaceholderConfigurer{ @Override protected String convertProperty(String propertyName, String propertyValue) { System.out.println("=================="+propertyName+":"+propertyValue); if("userName".equals(propertyName)){ return "czw"; } if("password".equals(propertyName)){ return "czw"; } return propertyValue; } }
然后将上面完成的类替换配置文件中的PropertyPlaceholderConfigurer:
<bean class="com.cardDemo.commonUtil.ConvertPwdPropertyConfigurer" p:location="classpath:jdbc.properties" p:fileEncoding="utf-8" />
事实上,在我刚刚的Demo项目当中,里面的jdbc.properties里面的文件是如下内容的:
driverClassName=oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@127.0.0.1:1523:orcl userName=someOneElseUnknowUserName password=somePwdElseUnknowPassowrd
而实际上,真实的密码却是czw/czw
相关文章推荐
- 面试常见问题:如何加密Web项目中配置文件中的密码?
- 如何加密Web项目中配置文件中的密码?
- 面试常见问题:如何加密Web项目中配置文件中的密码?
- Web项目中对配置文件中的密码进行加密(数据库连接密码)
- 加密Web项目中配置文件中的密码
- java Web项目中properties配置文件中的密码加密
- Struts 项目中web.xml文件配置
- C# web.config 配置文件的加密与解密,aspnet_regiis
- vue-cli的webpack模板项目配置文件分析
- 一个WEB项目安装包,自动配置数据库,config文件和虚拟目录。。(转)
- J2EE项目web.xml文件中Struts2配置错误
- vue-cli的webpack模板项目配置文件分析
- Java的Web项目中Web.xml配置文件元素详解
- 通过web.config文件配置项目中文件夹的访问权限
- vue-cli的webpack模板项目配置文件分析
- java Web项目javaEE中web.xml文件中配置 contextConfigLocation 方法
- 在ASP.NET项目中的web.config文件里配置数据库连接并在程序代码中获取连接字符串
- Web项目中java类读取WebRoot目录下的配置文件
- druid-1.0.13 数据库配置文件密码加密
- web项目部署在不同环境中需要修改配置文件的解决方法