druid有什么用(druid的优点)

druid有什么用(druid的优点)现在的开发习惯 无论是公司的项目还是个人的项目 都会选择将源码上传到 Git 服务器 GitHub Gitee 或是自建服务器 但只要将源码提交到公网服务器就会存在源码泄漏的风险 而数据库配置信息作为源码的一部分 一旦出现源码泄漏 那么数据库中的所有数据都会公之于众 其产生的不良后果无法预期 比如某某酒店的信息 于是为了避免这种问题的产生 我们至少要对数据库的密码进行加密操作

大家好,我是讯享网,很高兴认识大家。



现在的开发习惯,无论是公司的项目还是个人的项目,都会选择将源码上传到 Git 服务器(GitHub、Gitee 或是自建服务器),但只要将源码提交到公网服务器就会存在源码泄漏的风险,而数据库配置信息作为源码的一部分,一旦出现源码泄漏,那么数据库中的所有数据都会公之于众,其产生的不良后果无法预期(比如某某酒店的信息)。

于是为了避免这种问题的产生,我们至少要对数据库的密码进行加密操作,这样即使得到了源码,也不会造成数据的泄露,也算保住了最后一块遮羞布。

对于 Java 项目来说,要想快速实现数据库的加密,最简单可行的方案就是使用阿里巴巴提供的 Druid 来实现加密。

什么是Druid?

Druid(中文译为“德鲁伊”)是阿里巴巴开源的一款 Java 语言中最好的数据库连接池。

Druid 提供了强大的监控和扩展功能,当然也包含了数据库的加密功能。

Druid可以做什么?

对于本文来说,我们重点来看它的第 3 个特性,也就是使用 Druid 来实现数据库密码加密。

在没有进行密码加密之前,项目的交互流程是这样的:

在使用了密码加密之后,项目的交互流程就变成了这样:

本示例运行环境:

1.添加Druid依赖

Maven 项目:

Gradle 项目:

2.生成密文

Druid 添加完成之后就可以借助 Druid 中提供的 ConfigTools 类来加密密码了,实现代码如下:

以上代码执行的结果如下:

从上述结果可以看出,使用 ConfigTools 类会生成 3 部分的内容:

3.添加配置

完成了以上操作之后,只需要将上一步生成的公钥和密文添加到项目的配置文件 application.yml(或application.xml)中就实现了加密操作了,具体配置信息如下:


讯享网

其中 password 对应的是上一步生成的 password(密文),而 config.decrypt.key 对应的是上一步生成的 publicKey(公钥),如下图所示:

这里提供一个原始的配置文件,以便和加密后的配置文件进行比对:

4.注意事项-插着钥匙的锁

经过前面 3 步的配置之后,我们的程序就可以正常运行了,但这远没有结束!

在第 3 步配置时,我们将密文和公钥都写入配置文件,这就会造成当有人拿到密文和公钥之后,就可以使用 Druid 将加密的密码还原出来了,这就好比一把插着钥匙的锁是极不安全的。

因此我们正确的使用姿势:是将公钥找一个安全的地方保存起来,每次在项目启动时动态的将公钥设置到项目中,这样就可以有效的保证密码的安全了。

正确的配置文件

接下来我们将 Spring Boot 的公钥设置为配置项,在项目运行时再替换为具体的值,最终的安全配置信息如下:

可以看出公钥被修改成“${spring.datasource.druid.publickey}”了,这就相当于使用占位符先把坑给占上,等项目启动时再更换上具体的值。

开发环境替换公钥

开发环境只需要在 Idea 的启动参数中配置公钥的值即可,如下图所示:

当我们输入正确的公钥值时程序可以正常运行,当输入一个错误的公钥值时就会提示解码失败,如下图所示:

生产环境替换公钥

生产环境在启动 jar 包时只需要动态设置公钥的值即可,参考以下命令:

经过上述步骤之后,我们就完成 MySQL 密码的加密了,这样当 Spring Boot 项目启动时,Druid 的拦截器会使用密文和公钥将密码还原成真实的密码以供项目使用,当然这一切都无需人工干预(无需编写任何代码),Druid 已经帮我封装好了,我们只需要通过以上配置即可。 什么?你想知道 Druid 是如何通过密文和公钥还原出真实的密码的?

没问题,满足你,其实 ConfigTools 类中已经提供了相应实现,代码如下:

本文我们使用阿里巴巴开源的 Druid 实现了 MySQL 的密码加密,Druid 的加密过程非常方便,无需编写任何代码,只需要添加 Druid 依赖,再通过 Druid 的工具类生成密文,最后将密文配置到 application.yml 文件即可。项目在运行时会通过拦截器将密文转换成真正的密码,从而实现了 MySQL 密码的加密和解码的过程。

原创不易,如果觉得本文对你有帮助,请点个赞再走吧。如果可以,请随手将它分享到你的朋友圈,让更多需要的人知道,谢谢你。

小讯
上一篇 2025-06-08 15:27
下一篇 2025-05-17 22:48

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/161845.html