TOMCAT 连接池数据库密码可以加密

来源:互联网 发布:中国烟民为什么多 知乎 编辑:程序博客网 时间:2024/06/08 11:19

TOMCAT 连接池数据库密码可以加密 

url: http://blog.sina.com.cn/s/blog_49d63c02010006wu.html

2006-12-08 10:05:34

    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>

 昨天已经配置了几个应用系统,非常好用,大家也试试吧!

0 0