在项目开发过程中,需要配置数据库连接密码、Redis密码、网盘上传的AK/SK等敏感信息,都需要保存在配置文件里,或者配置中心。
这些信息如果泄露,还是会造成一定的困扰,这里介绍2种处理方案:

1、使用系统环境变量储存密码
比如K8S的环境变量、Windows的环境变量、Centos的环境变量等等,
然后在程序里使用 System.getenv()方法读取。
这种方式的好处:只有运维人员知道,连开发都不知道生产的密码。
密码变更也简单,运维直接操作就好了。
缺点就是部署时,容易遗漏,不过可以通过统一的环境镜像来处理。
一般推荐这种方式
注:如果变更密码,还是要考虑重启一下服务器上的所有服务,避免缓存了旧密码,导致服务故障。


2、密码还是写在程序的配置文件里,或者nacos之类的配置中心, 但是不使用明文,而是使用加密后的串。 同时在启动命令行里,指定密码参数。 下面介绍一下这种加密方式:

2.1、添加依赖,参考:https://github.com/ulisesbocchio/jasypt-spring-boot

<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.4</version>
</dependency>

2.2、对文本进行加密,假设密码为123456,加密代码如下(建议部署一个加密后台,给开发用):

// 参考 https://github.com/ulisesbocchio/jasypt-spring-boot
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword("123456");
// 默认值
config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
config.setKeyObtentionIterations("1000");
config.setPoolSize("1");
config.setProviderName("SunJCE");
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
config.setStringOutputType("base64");
encryptor.setConfig(config);
System.out.println("beinet 加密后: " + encryptor.encrypt(username));

上面的代码输出:beinet 加密后: 8LJb3ICopErpPuEw1S/3rHc2fkk1qPScP0ODDbnmuSBjY6NJqN1oZcAxNDVl06qv

2.3、把加密后的文本,套上 ENC()函数,写入yml配置里:

pwdTest:ak: ENC(8LJb3ICopErpPuEw1S/3rHc2fkk1qPScP0ODDbnmuSBjY6NJqN1oZcAxNDVl06qv)

2.4、配置一下IDEA的Java启动命令行参数:
点击右上角 Edit Configurations… 在右侧Configuration=>Environment=>VM options的右边添加:
-Djasypt.encryptor.password=123456

2.5、运行代码验证一下:

@Value("${pwdTest.ak}")
private String ak;
@Override
public void run(String... args) throws Exception {System.out.println(ak);
}

可以看到,能成功打印出解密后的 beinet

SpringBoot项目配置明文密码泄露问题处理相关推荐

  1. SpringBoot项目配置明文密码泄露问题的处理方式

    SpringBoot项目配置明文密码泄露问题的处理方式: 1.引入jar包 <dependency>     <groupId>com.github.ulisesbocchio ...

  2. springboot项目配置视图解析器无效的问题

    springboot项目配置视图解析器无效的问题 今天springboot尝试配置视图解析器的时候,如图: 一切正常,视图解析器却始终无效.后面发现问题. 在控制器的注解要使用:@Controller ...

  3. SpringBoot Shiro 配置自定义密码加密器

    SpringBoot Shiro 配置自定义密码加密器 自定义认证加密方式 /*** 自定义认证加密方式*/ public static class CustomCredentialsMatcher ...

  4. IDEA SpringBoot项目配置热更新,无需每次手动重启服务器

    IDEA SpringBoot项目配置热更新的步骤 在pom.xml中添加依赖: <dependency><groupId>org.springframework.boot&l ...

  5. SpringBoot项目加密数据库密码

    真实的项目开发中,数据库的密码不可能以明文方式写在配置文件中,一般都是经过加密的: 今天,主要介绍用Driver来对数据库的密码进行加密. alibaba druid加解密规则: 明文密码+私钥(pr ...

  6. springboot项目配置ssl证书

    1.首先进入阿里云服务器,搜索ssl证书,免费申请,dns会自动解析该证书,所以不用设置 2.下载tomcat和nginx服务器类型的证书 3.将tomcat服务器类型的文件解压,打开,获得pfx文件 ...

  7. SpringBoot项目配置disconf

    说明: SpringBoot项目通过application.yml实现项目的配置, 配置文件如下: server:     port: 9090     context-path: #/daily/ ...

  8. Springboot项目配置oracle数据库

    前段时间的一个项目需要使用oracle数据库,之前使用的都是Spingboot+Mybatis+Druid+Mysql,没有配置Oracle的经验,现在记录一下 1.使用Navicat Premium ...

  9. Springboot项目配置404错误页面

    项目结构,错误页面路径 因为下面这个项目 静态文件的路径是springboot项目默认路径,所以application.properties都不用配置. 全局错误页面配置类: import org.s ...

  10. springboot项目配置(yml,pom)

    首先使用idea创建一个纯净的springboot项目 1,替换pom文件 <?xml version="1.0" encoding="UTF-8"?&g ...

最新文章

  1. 服务器技术综述(二)
  2. python学习笔记(一)之入门
  3. 训练一个130亿参数的模型要用几个GPU?微软:一个就够
  4. Java程序员从笨鸟到菜鸟之(六十八)细谈Spring(二)自己动手模拟spring
  5. [js] 使用delete删除数组,其长度会改变吗
  6. Sun为何一掷千金拿下MySQL?
  7. 同宿舍程序员毕业五年后:有人年薪百万,有人月薪一万
  8. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(3) - MXCSR寄存器详解
  9. DB2 SQL执行计划
  10. 未来教育mysql下载_未来教育计算机二级题库中的视频为什么无法播放?
  11. matlab绘制离散信号结论,实验二 离散时间信号的表示及运算
  12. the jre_home environment variable is not defined correctly this environment vari
  13. 计算机没有显卡设置吗,绝地求生显卡优化设置教程 低配电脑也能流畅吃鸡了!...
  14. Magento数据库结构:EAV (转)
  15. 解决:Linux nohup命令不再默认输出日志文件
  16. 企业文件分享/共享有哪些安全方式
  17. mysql注入时的注释处理
  18. Contiki内核原理
  19. 用单链表编程实现一个简易的高校学籍管理系统_SSM框架实现学生学籍管理系统...
  20. 编制程序完成下述任务:接受两个数,一个为用 户一年期定期存款金额,一个为按照百分比格式表示的利率;程序计算一年期满后本金与利息总额。说明:(1)存款金额以人民币元为单位,可能精确到分; (2)输入利率

热门文章

  1. web前端入坑第二篇:web前端到底怎么学?干货资料!
  2. 极路由 刷linux,极路由3(HC5861)刷第三方固件Padavan完整教程
  3. x509证书、openssl、go生成证书
  4. Java8 LocalDateTime 转时间戳 秒、毫秒
  5. Freescale PowerPC系列架构 处理器 种类介绍 型号发展
  6. 联想笔记本电脑V110拆机、清灰详细步骤
  7. 【频率计】基于ISE+VHDL编程的多功能数字频率计
  8. ftp服务器连接不了文件路径,Serv-U和CuteFTP无法连接FTP服务器问题解答
  9. php 输入 保留格式化,phpstorm实现保存(ctrl+s)同时格式化代码的方法
  10. 计算机网络(第五版)读书笔记