zoukankan      html  css  js  c++  java
  • Spring Boot加密配置文件特殊内容

    有时安全不得不考虑,看看新闻泄漏风波事件就知道了

    我们在用Spring boot进行开发时,经常要配置很多外置参数ftp、数据库连接信息、支付信息等敏感隐私信息,如下


    这不太好,特别是互联网应用,应该用加密的方式比较安全,有点类似一些应用如电商、公安、安检平台、滚动式大屏中奖信息等显示身份证号和手机号都是前几位4109128*********和158*******。

    那就把图中的明文改造下

    1.  引入加密包,可选,要是自己实现加解密算法,就不需要引入第三方加解密库

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

    2.   加密敏感内容,然后填充配置文件 

    加密代码:

    BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
    		textEncryptor.setPassword("company");
    
    		String name = textEncryptor.encrypt("root");
    		String password = textEncryptor.encrypt("cstorfs");
    	
    		System.out.println("数据库用户名加密后:"+name);
    		System.out.println("数据库密码加密后:"+password);

    输出加密后的效果


    把这两个值对应的填充到数据库用户名和密码


    3.   编写配置类

    就是Spring里的标有@Configuration注解的类,然后解密配置文件里的数据库用户名和密码(就是上图中的敏感属性字段)


    4.  编写测试案例

    只写核心代码

    // 我使用的最新版Springboot2.3.0(放弃1版本)启动后,不放心的话可以测试数据库是否连接正常
    		UserMapper userMapper = applicationContext.getBean(UserMapper.class);
    		Example example = new Example(User.class);
    		example.createCriteria().andEqualTo("username", "dongguangming");
    		List<User> userList = userMapper.selectByExample(example);
    		if (userList.size() > 0) {
    			User user = userList.get(0);
    			logger.info("数据库连接正常,从用户表取用户名是donggguangming的数据,用户:" + user);
    		}

    输出效果:

     

    ok,就是这效果!!!

    注意,加解密算法没有强制要求,可以自己写,敏感信息(ftp、email、数据库连接信息、支付支付宝微信等)也可以接着加,用的时候把它解密出现就行

  • 相关阅读:
    spring的@Transactional注解详细用法
    C#中对string与string[]的初步操作
    响应式下的雪碧图解决方案 - 活用background-size / background-position
    background-position 详解
    sass学习笔记
    微信小程序实操-image height:auto问题,url地址报错,“不在以下合法域名列表中”问题等
    如何开发一个微信小程序
    括号生成 回溯算法 递归 深度优先遍历 剪枝
    前K个高频元素 数字型 Hash表解决
    寻找重复的数 hash表
  • 原文地址:https://www.cnblogs.com/dongguangming/p/12985445.html
Copyright © 2011-2022 走看看