应用配置文件敏感信息还在裸奔?聊聊敏感信息加密策略
应用系统实施部署时,生产环境数据库用户密码等敏感信息如果直接明文存储在配置文件中,很容易信息泄露存在很大的风险。
规范化的实施规范,生产环境配置信息应该只有对应的运维实施人员掌握,研发人员以及其他人员都不该掌握此信息,以保障生产环境信息数据安全。当然小公司研发人员从研发到运维啥都做也没什么安全规范的可以忽略。
war包部署加密方式
传统war包部署在中间件中的方式,可以在中间件中配置数据源信息,程序获取中间件数据源的数据库配置信息以达到加密的目的。
SpringBoot加密方式
随着现在SpringBoot的火爆,jar包轻量级的部署方式抛弃了中间件,可以采用Jasypt安全框架进行敏感信息加密。
Jasypt集成SpringBoot步骤
1、添加依赖
1 2 3 4 5 | <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version> 3.0 . 4 </version> </dependency> |
2、配置文件加密
1 2 | spring.datasource.username= ENC(U7gvFgPcCMGw/opVnB8I6vcHiFmKZNt8Vu/4PTYn1a05755N02+bEDn) spring.datasource.password= ENC(wwhIOI+9f+X2hFZsxRT5Z9yvg3CHy03IKzZY1ZU+abBzFY2o) |
3、密钥
1 | jasypt.encryptor.password= 123456 |
密钥生产环境也不建议放在配置文件中,这样很容易可以通过密钥破解加密的敏感信息。密钥建议放到启动脚本或者环境变量中。
4、密文加密
准备好了敏感信息和密钥那如何加密呢,可采用如下方法加密:
1 2 3 4 5 6 7 8 9 10 | String salt = "123456" ; //密钥 String str = "123456" ; //待加密字符串 System.setProperty( "jasypt.encryptor.password" , salt); StringEncryptor stringEncryptor = new DefaultLazyEncryptor( new StandardEnvironment()); //加密方法 System.out.println(stringEncryptor.encrypt(str)); //解密方法 System.out.println(stringEncryptor.decrypt(stringEncryptor.encrypt(str))); //断言结果对比 Assert.assertEquals(stringEncryptor.decrypt(stringEncryptor.encrypt(str)),str); |
部署加密规范
我们研发环境是敏感信息无需加密,其他环境都需要加密部署。
分类:
spring boot
标签:
spring
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构