Tomcat连接池配置时对数据库密码加密实现(原创)!

lxc10012002 2007-01-19 12:30:09
Tomcat 连接池大家应该都用过吧,那写在server.xml里的数据用户以及密码都是明文,这样非常不安全的,如果一但知道了这个数据库名和密码获得,可想而知。
那么如何实现对数据库密码加密呢,,因为喜欢开源,接下来就奉献给大家。
最开始的想法是通过tomcat的源码从catalina.java这个加载类开始找,看连接池是如何加载的,然后修改这个类,重新ant。后来发现不行,这时师哥出马(师哥是高手,高手,高高手,佩服),看到了连接池用的factory类,决定重这个类开始下手。
如果才能把用户名或者是密码使用加密算法进行加密使用呢,这就需要对Tomcat一般依赖dbcp连接池配置。
http://jakarta.apache.org/commons/dbcp/下载commons-dbcp源码包(一定要对用tomcat的版本),对org.apache.commons.dbcp.BasicDataSourceFactory类修改,把数据库密码字段进行解密程序实现,然后重新用ant工具build这个包,覆盖tomcat\common\lib的对应commons-dbcp.jar包就可以了,加密算法和解密算法网上有很多大家自己选择就可以了。
因为server.xml里配置的password字段已经是经过DESede加密了,如下面配置已经用红色标记出来了,所以在org.apache.commons.dbcp.BasicDataSourceFactory可以直接使用解密程序就ok了,如果你想把加密程序也打到包里,自己做吧。
在配置文件连接池内容如下: <Resource name="jdbc/test" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/test">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>username</name>
<value>test</value>
</parameter>
<parameter>
<name>password</name>
<value>F11C3DA0F79D0F2AE</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:oracle:thin:@192.168.0.1:1521:test</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
</ResourceParams>

昨天已经配置了几个应用系统,非常好用,大家也试试吧!
原文出处http://blog.sina.com.cn/u/49d63c02010006wu
...全文
1660 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sun113 2007-04-23
  • 打赏
  • 举报
回复
马克
sun113 2007-04-04
  • 打赏
  • 举报
回复
study
javaoaout 2007-04-02
  • 打赏
  • 举报
回复
mark
xiangbo520 2007-03-29
  • 打赏
  • 举报
回复
留个记号,
z15920007 2007-01-19
  • 打赏
  • 举报
回复
虽然不是很了解,还是支持一下先。

欢迎喜欢Struts、hibernate、Spring、EJB、JSF等的朋友加群共同研讨有关j2ee的知识。
高级群:5979637

67,535

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧