前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你的数据库密码还在裸奔吗?试一试Druid数据库密码加解密吧!

你的数据库密码还在裸奔吗?试一试Druid数据库密码加解密吧!

作者头像
Java后端技术
发布2018-08-09 11:40:18
1.5K0
发布2018-08-09 11:40:18
举报
文章被收录于专栏:Java后端技术栈Java后端技术栈

Druid的功能

1、替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。

2、可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。

3、数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。

4、SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。

5、扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。

其中第三条说出了本博客的一个目的,详细过程如下:

1、首先配置Druid的数据库连接池

其中要注意的是:

2、创建DruidPasswordCallback的子类如下:

这里的DBPasswordCallback 是继承com.alibaba.druid.util.DruidPasswordCallback 的,重写的是DruidPasswordCallback 的setProperties方法,在setProperties方法中使用了setPassword(password.toCharArray());这个方法,setPassword是DruidPasswordCallback 的父类中的一个方法。

一个代码追踪过程:

1、使用com.alibaba.druid.filter.config.ConfigTools 提供的加密和解密方法

从源代码中可以看出,ConfigTools加密和解密使用了默认的公钥和私钥,这里我们创建自己的公钥和私钥。

2、使用RSA公钥和私钥,生成一对公钥和私钥的工具类:

结果如下:

上边是公钥下边是私钥。

3、使用私钥对明文密码进行加密

结果如下:

那我们数据库的密码就应该设置为这个结果:

4、解析密码的时候需要的Callback类

其中PasswordCallback是javax.security.auth.callback包下面的,底层安全服务实例化一个 PasswordCallback 并将其传递给 CallbackHandler 的 handle 方法,以获取密码信息。

当然,除了使用上述的方式,自己也可以对应一套加解密方法,只需要在DBPasswordCallback的String password =ConfigTools.decrypt(PUBLIC_KEY_STRING, pwd);替换即可。

3、在jdbc.properties存放自己加密之后的信息

注意:2、3过程中密码的设置要确定,加密、解密的最初始密码是要对应的。

4、设置自定义的DruidPasswordCallback

在自己的spring配置文件中加入下边的一句bean配置:


另外还可以直接继承自Spring提供的PropertyPlaceholderConfigurer,摘录别人一段代码大家参考一下:

粘贴复制代码请点击下方“阅读原文”查看。


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-06-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java后端技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Druid的功能
  • 1、首先配置Druid的数据库连接池
  • 2、创建DruidPasswordCallback的子类如下:
  • 3、在jdbc.properties存放自己加密之后的信息
  • 4、设置自定义的DruidPasswordCallback
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档