原文来自:http://club.youshang.com/173/viewspace-1701,因为我觉得作者讲解不太详细,我把后面给去掉,保留了作者的前半部份。
Tomcat连接池写在server.xml里的数据用户以及密码都是明文,这样非常不安全的,如果一但知道了这个数据库名和密码获得,可想而知。
那么如何实现对数据库密码加密呢,,因为喜欢开源,接下来就奉献给大家。
最开始的想法是通过tomcat的源码从catalina.java这个加载类开始找,看连接池是如何加载的,然后修改这个类,重新ant。后来发现了连接池用的factory类,决定重这个类开始下手。
如果才能把用户名或者是密码使用加密算法进行加密使用呢,这就需要对Tomcat一般依赖dbcp连接池配置。
http://jakarta.apache.org/commons/dbcp/下载commons-dbcp源码包(一定要对用tomcat的版本),对org.apache.commons.dbcp.BasicDataSourceFactory类修改,根据"PROP_PASSWORD"RA找到如下:
value=properties.getProperty(PROP_PASSWORD);
if(value!=null){
dataSource.setPassword(value);
}
可以看得出来就是将配置文件中取出的密码,进行赋值给相关变量了,这个时候把准备好的加密码文件加进去,如我的加密码JAVA为Encode.java,将这个文件放在这个包下面,但要保证该Encode.java最好不引用除J2SE以外的其它包,否则还得把包给加进去,我这里改成:
value=properties.getProperty(PROP_PASSWORD);
if(value!=null){
dataSource.setPassword(Encode.decode(value));
}
就表示对从数据源配置中取过来的密码进行解密了,这个时候可见数据源配置中密码如下:
<parameter>
<name>password</name>
<value>1f65866187612115</value><!--原为123456-->
</parameter>
当然这里的密码是采用上面提到的Encode.java的encode进行加密码的,与decode是可逆的,这样才可以正确解密。
另外说明一下,从官方网站下载下来的源程序,采用ANT并不一定可以直接编译,我这里就是这种情况,编译的时候把错,将其导入ECLIPSE工程中,并加入相关POOL包,通过ANT也编译不过去,我猜想可能是ANT版本的原因,因为后面的我把"工程->自动编译..."给勾上后,自动编译过去,将这两个类BasicDataSourceFactory和Encode拷贝出来,将原来的包用WINRAR打开,放到其路径中。另外这外commons-dbcp-1.2.2.jar放到server/lib下面不行,至少我这边就不行,我的TOMCAT是5.0,我前面一直在这里找这个包都没有找到,但是我看数据源却是采用的BasicDataSourceFactory,后来动用了UE才搜索出来,原来在common的lib下面,将其拷贝进去,重启TOMCAT登陆,OK。
<!--EndFragment-->
分享到:
相关推荐
使用AES256加密技术实现tomcat7对连接池数据库密码加密解密,资源中包含加密小程序,小程序实现加密,tomcat中实现解密,方便客户自己修改数据库密码且是密文!
### Tomcat连接池数据库密码加密解密方法详解 在企业级应用中,数据库的安全性尤为重要。其中,数据库连接池作为应用程序与数据库之间的桥梁,扮演着关键角色。然而,当数据库的用户名和密码直接硬编码在配置文件...
使用AES256加密技术实现tomcat7对连接池数据库密码加密解密,资源中包含加密小程序,小程序实现加密,tomcat中实现解密,方便客户自己修改数据库密码且是密文!支持多操作系统如:linux mac os 文件太多分成两部分请...
### 使用Tomcat-5_5_20配置数据库连接池详细介绍 #### 一、Tomcat基本概述 在本文档中,我们将详细介绍如何在Tomcat 5.5.20版本中配置数据库连接池。Tomcat作为一款开源轻量级Web应用服务器,在Java Web开发领域...
【描述】:Tomcat连接池是Apache Tomcat服务器中的一个关键组件,它管理数据库连接资源,以提高应用程序的性能和效率。在高并发环境中,频繁地创建和销毁数据库连接会导致系统资源的大量消耗,而连接池可以预先配置...
在Java Web应用中,Tomcat作为一款广泛应用的Servlet容器,其数据源连接池配置是确保高效、稳定数据库访问的关键步骤。本篇文章将详细介绍如何在Tomcat中配置数据源连接池,以及涉及的相关jar包文件。 首先,理解...
能够加密配置文件中的数据库密码。 关于clearpool的详细介绍请参考博客:http://my.oschina.net/xionghui/blog/304561。 clearpool和druid、tomcat-jdbc的性能比较如下图: clearpool和...
总之,早期的数据库连接池设计为我们提供了高效、可靠的数据库连接管理手段,随着技术的发展,现代的连接池如HikariCP、Apache DBCP 2.x和Tomcat JDBC Pool等在性能和功能上都有了进一步的提升,但基本的连接池原理...
7. **性能优化**:考虑到Access数据库的性能限制,可能需要优化JDBC连接池,减少不必要的数据库交互,或者考虑使用缓存技术提高响应速度。 8. **版本控制**:使用Git或其他版本控制系统管理代码,确保团队协作时...
在Tomcat中,数据库连接池的配置通常在`conf/server.xml`文件中。你需要将数据库连接池的配置添加到`<GlobalNamingResources>`或特定的`<Context>`元素内。配置通常包括数据源名称(DataSource)、驱动类名、URL、...
这些连接池的配置可以在`application.properties`或`application.yml`文件中进行,如设置数据库URL、用户名、密码和驱动类名等。 例如,配置MySQL连接池的基本步骤如下: 1. 添加MySQL驱动依赖: ```xml ...
本文将详细介绍如何使用Druid连接池配置数据库连接,并使用密文密码来替代明文密码。 #### Druid简介 Druid是由阿里巴巴开源的一个高性能的Java数据库连接池实现,它不仅提供数据库连接管理的功能,还提供了SQL...
通过这个标签内的子标签,可以定义数据源,并指定其属性,比如数据库的连接信息(URL、用户名、密码等)、连接池的参数(最大活动连接数maxActive、最大空闲连接数maxIdle、最大等待时间maxWait等)。 3. **JNDI...
7. **用户名和密码**:用于连接数据库的凭证,通常在连接池的配置中以加密或安全的方式存储。 8. **事务隔离级别**:定义了事务间的隔离程度,如READ_UNCOMMITTED、READ_COMMITTED、REPEATABLE_READ、SERIALIZABLE...
常见的连接池有Apache的DBCP、C3P0,以及Tomcat内置的Tomcat-jdbc等。在项目中,应配置合适的连接池以优化数据库操作。 对于用户信息的修改,可以提供一个修改个人信息的页面,用户提交更改后,服务器端通过UPDATE...
在Web应用中,JNDI常用来管理和查找资源,如数据库连接池。通过JNDI,我们可以将敏感信息(如数据库密码)从源代码中分离出来,存储在一个安全的地方,比如受保护的服务器环境变量或外部配置文件中。这样可以避免...
Spring Boot 使用 C3P0 数据库连接池的方法 Spring Boot 是一个基于 Java 的框架,提供了一种快速构建生产级别的应用程序的方式。随着应用程序的发展,数据库连接池的使用变得越来越重要。C3P0 是一个流行的数据库...
Java登录和注册系统是Web应用开发中的基础模块,本案例主要使用了Servlet、MySQL数据库、Tomcat8服务器以及C3P0连接池进行实现。以下将详细解释这些关键组件及其在系统中的作用。 1. **数据库设计**: 数据库采用...
本教程将详细介绍如何使用JSP连接Access数据库,并提供一个具体的注册页面的示例。...在实践中,你可能还需要配置数据库连接池,优化数据库操作,以及使用MVC模式来分离视图、控制和模型,提高代码的可维护性和复用性。