tomcat敏感数据加密实现方案

2023-09-18 20:00:00

1 背景

tomcat部署的SSM老项目,在tomcat的context.xml下配置了数据源信息,且部分敏感信息都是明文,这是一项严重的不安全因素。故需要将数据库密码这种敏感信息进行加密。

2 实现方案

2.1 继承重写工厂方法

这种方法需要在原应用工程中添加扩展工厂类,用于处理tomcat配置文件中敏感信息。优点是不被tomcat版本限制;缺点是依赖原工程代码,若是老项目代码维护有间断,源码不完整,则不适用。

(1)自定义工厂类

tomcat源码中在BasicDataSourceFactory工厂类中,通过获取context.xml配置文件配置信息,将信息加入到数据源连接中,此过程完成对数据源的配置读取处理过程。

// tomcat源码中读取context.xml数据源配置-密码核心代码
...
value = properties.getProperty(PROP_PASSWORD);
if (value != null) {
   
    dataSource.setPassword(value);
}
...

tomcat的context.xml配置文件标签下的factory属性支持指定资源工厂类,用于创建资源对象。对此可以创建自定义工厂类重写BasicDataSourceFactory工厂类中方法,对数据库密码进行解密处理。

/* 
* 自定义MyBasicDataSourceFactory处理数据源配置伪代码逻辑
*/
public class MyBasicDataSourceFactory extends BasicDataSourceFactory{
   

    //编写加密方法,使用该方法对tomcat中配置原密文信息加密,再将密文写入原配置文件  
    private String encrypt(xxx) throws Exception {
   
        String content = ref.get(isx)
更多推荐

森林防火可视化智能监管与风险预警系统解决方案

一、方案背景森林火灾是世界八大自然灾害之一,具有发生面广、突发性强、破坏性大、危险性高、处置扑救特别困难等特点,严重危及人民生命财产和森林资源安全,甚至引发生态灾难。有效预防和及时控制森林火灾是保护国家生态建设成果、推进生态文明建设的重要措施。监管痛点:1)现有的森林防火监测系统落后,以人工地面巡护、瞭望塔高点巡查为主

Mysql基本命令操作

Mysql基本命令操作一、基本概念1.1、数据库分类1.1.1、关系型数据库(二代数据库)1.1.2、非关系型数据库(三代数据库)1.2、库和表1.3、SQL语句1.3.1、SQL语言分类1.3.2、常用数据类型二、查看数据库2.1、查看mysql版本2.2、查看数据库2.3、查看数据库中包含的表2.4、查看表结构三、

驱动开发 linux内核GPIO子系统、及其新版API的概念和使用,linux内核定时器

1、GPIO子系统概述:每一个芯片厂商生产出芯片后会给linux提供一个当前芯片中gpio外设的驱动,我们只需要调用对应的厂商驱动就可以完成硬件的控制。而linux内核源码中的gpio厂商驱动有很多,linux内核个会对厂商驱动做一些封装,会提供一系列的API,我们在自己编写设备驱动中只需要调用这些API即可访问对应厂

【微服务】六. Nacos配置管理

6.1Nacos实现配置管理配置更改热更新在nacos左侧新建配置管理DataID:就是配置文件名称一般命名规则:服务名称-环境名称.yaml配置内容填写:需要热更新需求的配置配置文件的id:[服务名称]-[profile].[后缀名]分组,默认即可格式,目前支持yaml和properties6.2微服务配置拉取配置获

iOS应用闪退或崩溃的解决方法

iOS应用的闪退(Crash)通常是应用在运行过程中发生了异常或错误,导致应用崩溃的情况。解决iOS应用的闪退问题需要一些工具和方法,以下是一些建议,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。1.使用Xcode进行调试:Xcode是苹果官方的开发工具,提供了强大的调试功能。你可

专访西藏药业CEO郭远东:数字化转型核心是驱动业务战略实现丨爱分析访谈

[图片]近日,爱分析联合创始人、首席分析师张扬与西藏药业CEO郭远东进行了一次深度对话,就西藏药业整体数字化规划布局、数字化转型过程中面临的痛点及落地实践展开交流。爱分析将通过对各家医药企业数字化转型的探讨和洞悉,为行业提供更多的借鉴。创始于1999年的西藏药业,已成长为产品涵盖生物制药、现代藏药、中药和化学药领域,业

Jetpack:在数据变化时如何优雅更新Views数据

本文讲的是关于Jetpack的架构组件LiveData,LiveData是Lifecycle-aware组件的一个应用,这意味着LiveData遵守Activity、Fragment和Service等组件的生命周期,在它们生命周期处于活跃状态(CREATED和RESUMED)才进行更新Views。使用LiveData步

Smart UI Web 16.0.1 WebComponents htmlelements Crack

JavascriptWeb组件库SmartUIWeb组件库是您构建令人惊叹的Web应用程序所需的唯一套件。它包含70多个快速且专业设计的UI组件,可在单个包中实现美观且始终现代的Web应用程序。具有高级功能的即用型Javascript组件。只需几行代码即可使用数据网格、甘特图、调度程序等复杂组件。Smart是一个基于J

Paper Reading: RSPrompter,基于视觉基础模型的遥感实例分割提示学习

目录简介目标工作重点方法实验总结简介题目:《RSPrompter:LearningtoPromptforRemoteSensingInstanceSegmentationbasedonVisualFoundationModel》,基于视觉基础模型的遥感实例分割提示学习日期:2023.6.28单位:北航、北京数字媒体重点

【结构体类型——详细讲解】

结构体1.结构体类型声明1.1结构体的概念结构体是⼀些值的集合,这些值称为成员变量。结构体的每个成员可以是不同类型的变量。1.2结构的声明structtag{member-list;}variable-list;例如描述⼀个学⽣:structStu{charname[20];//名字intage;//年龄charsex

【数据结构-树】AVL树

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。推荐:kuan的首页,持续学习,不断总结,共同进步,活到老学到老导航檀越剑指大厂系列:全面总结java核心技术点,如集合,jvm,并发编程redis,kaf

热文推荐