SpringBoot加密配置文件的SQL账号密码方式
目录
- 加密配置文件的SQL账号密码
- 1、在Maven项目中引入依赖
- 2、同时需要在application.yml配置文件中先配置密码
- 3、可以在测试用例中
- 4、最后在配置文件中放入加密后的字符串就行
- 对配置文件进行加密
- 第一步:pom文件加入依赖,如图
- 第二步:生成密钥
- 第三步:springboot配置文件中添加配置,如图
- 第四步:通过命令解密密码
加密配置文件的SQL账号密码 一般项目的配置文件里的信息都是明文的,导致有时候比较敏感的信息也直接暴露得超级明显,比如SQL的链接 账号 密码等。
可能作为开发者,开发环境这些暴露了也没多大关系,但是生产环境就需要谨慎了!
话不多说,我们可以选择国外牛人写的SpringBoot的工具 jasypt 进行加密,项目是开源的
Github地址如下:https://github.com/ulisesbocchio/jasypt-spring-boot
1、在Maven项目中引入依赖
com.github.ulisesbocchio jasypt-spring-boot-starter2.1.0
2、同时需要在application.yml配置文件中先配置密码
因为工具是使用该密码进行加密或者解密的,所以必须保证配置中加密后的串是使用同一密码加密的,否则项目启动时也解密不了。
jasypt:encryptor:password: 123456
3、可以在测试用例中
对原信息进行加密,使用方法很简单。简单的Demo如下:
@RunWith(SpringRunner.class)@SpringBootTest@WebAppConfigurationpublic class Test {@AutowiredStringEncryptor encryptor; @Testpublic void getPass() {#直接调用加密的方法String mysql = encryptor.encrypt("mysql-username|mysql-password"); }}
4、最后在配置文件中放入加密后的字符串就行
如上面的 “mysql” 串
url: ENC(mysql==)username: ENC(mysql==)password: ENC(mysql=)
注意 ENC() 是固定的写法,mysql== 就是你加密后的对应串。
这样就可以假装的把敏感信息加密了,哈哈哈之所以说假装。可能很多人都会有疑问,既然加密的密码是明文的存在配置文件中,别人一样可以轻松的解密出来。
没错,确实是这样。这种加密的方式只能说不能让人眼一下子看出账号密码。
只是伪装了一下,如果hacker拿到了你的项目权限,那么做任何加密其实都没有大作用了。所以做好项目和服务器的安全问题才是最基本的也是最重要的。
OK!OK!OK!
对配置文件进行加密 开发的同学们都知道,例如项目依赖的信息,数据库信息一般是保存在配置文件中,而且都是明文,因此需要进行加密处理,今天在这里介绍下jasypt集成springboot加密的配置。
首先,这些都是建立在你的springboot项目是能正常运行的前提下。
第一步:pom文件加入依赖,如图
这里提供一个版本
com.github.ulisesbocchio jasypt-spring-boot-starter2.1.0
文章图片
第二步:生成密钥
找到你本地maven仓库的jasypt的jar包,在该目录下打开cmd命令窗口,如图:
文章图片
执行
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="test" password=test algorithm=PBEWithMD5AndDES其中input为你的明文密码,这里我演示的是test,password为你的私钥,algorithm这个是一个规则,切勿更改!!!。执行后如图:
文章图片
简单解释一下,这里的OUTPUT就是加密之后的密文(密码)。这里提供一下cmd复制文本的办法(因为我一开始也不会cmd复制):鼠标右键标记然后选中你要复制的内容,就可以复制啦。
第三步:springboot配置文件中添加配置,如图
文章图片
这里我用的是application.yml文件,application.properties文件写成这样:jasypt.encryptor.password=test。
但是真正使用的是启动类中System.setProperty("jasypt.encryptor.password", "demo"); 给这一节点间重新赋值,这样有利于再次保护到私钥,(如果哪位有更好的方案,请及时留言,大家一起讨论讨论。)
文章图片
说明:上图第一个password对应第二步中ARGUEMENTS中的password,第二个password对应第二步中OUTPUT中的结果,形式一定要加上ENC(you password),如图所示。
第四步:通过命令解密密码
执行命令
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="nhyL4CzSQv/aPxoe7TzpOQ==" password=test algorithm=PBEWithMD5AndDES结果如下图:
文章图片
【SpringBoot加密配置文件的SQL账号密码方式】
文章图片
这里到最后就完成了springboot和jasypt的集成啦,是不是非常简单,哈哈。不过有一点要注意哦,千万不要泄露你的配置文件哦(特别是ARGUMENTS里面的password,这个相当于私钥),不然别人可以通过第四步解密你的密码,建议还是把配置文件放在配置中心
百度的disconf https://github.com/knightliao/disconf 有兴趣的同学可以去研究一下。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- #|Flask框架实现注册加密功能详解【Flask企业课学习】
- 数字资产知识库管理系统实现过程(springboot+es+vue+neo4j)
- electron-vue|electron-vue 项目启动动态获取配置文件中的后端服务地址
- 物联网微消息队列MQTT介绍-EMQX集群搭建以及与SpringBoot整合
- javaweb常用的配置文件
- Flask框架实现注册加密功能详解Flask企业课学习
- c++实现md5加密的代码
- 中间件|Redis
- springboot|SpringBoot集成JWT实现token验证
- 全文检索|springboot整合