面试问题梳理:项目中防止配置中的密码泄露-Jasypt

背景

想起面试的时候,面试官问我现在大家用Spring框架,数据库、ES之类的密码都是配置在配置文件中的,有很大的安全隐患,你有考虑过怎么解决嘛?

当时我回答是可以在项目启动的过程中的命令行追加的方式,感觉面试官不太满意,让我回去等通知~

所以才想起来查了下Jasypt这个组件,有了这篇文档。

基础配置

这个组件的使用还是比较简单的,引入POM依赖,设置加密方式,添加前后缀即可使用

xml 复制代码
<dependency>
   <groupId>com.github.ulisesbocchio</groupId>
   <artifactId>jasypt-spring-boot-starter</artifactId>
   <version>3.0.3</version>
</dependency>

运行原理

根据我的理解,Jasypt的工作原理如下

  • jasypt-spring-boot-starter这个包里面配置了Spring需要扫描的路径和初始化的bean对象
  • 初始的bean对象会读取Spring的配置对象容器,然后将容器内容的配置对象都替换为Jasypt中EncryptablePropertySource,也就是配置对象的子类。
  • Spring是通过getProperty(name),而Jasypt重写了这个方法,在调用获取配置项值的过程中判断值是否包含加密前后缀,然后进行解密返回
    当然里面还包含了很多细节,如加密方式,对配置对象的代理,对配置项的缓存存储等。

感谢

感谢大佬对源码的解析

相关推荐
Lee川10 小时前
优雅进化的JavaScript:从ES6+新特性看现代前端开发范式
javascript·面试
Lee川13 小时前
从异步迷雾到优雅流程:JavaScript异步编程与内存管理的现代化之旅
javascript·面试
晴殇i15 小时前
揭秘JavaScript中那些“不冒泡”的DOM事件
前端·javascript·面试
绝无仅有16 小时前
Redis过期删除与内存淘汰策略详解
后端·面试·架构
绝无仅有16 小时前
Redis大Key问题排查与解决方案全解析
后端·面试·架构
AAA梅狸猫17 小时前
Looper.loop() 循环机制
面试
AAA梅狸猫17 小时前
Handler基本概念
面试
Wect17 小时前
浏览器缓存机制
前端·面试·浏览器
掘金安东尼18 小时前
Fun with TypeScript Generics:玩转 TS 泛型
前端·javascript·面试
掘金安东尼18 小时前
Next.js 企业级落地
前端·javascript·面试