springboot使用jasypt增加应用安全性

无论任何开发安全问题也是我们应该考虑的部分,除了数据接口层面的安全性,数据库用户名密码等敏感信息也是需要考虑安全问题,日常开发中大多数也习惯写明文,这样如果代码泄露数据库也面临较大威胁,本次将分享数据库用户名、密码如何在springboot项目中配置和使用

1 解决方案

解决上述问题其实比较简单,无非就是对数据库用户名和密码加密,但是可用的加密算法特别多,有对称加密的如DES、3DES(TripleDES)、AES、RC2、RC4、RC5和Blowfish等,不对称加密RSA等,但这些算法可能过于复杂,配合springboot也有些难度. 最后经查阅资料大部分都推荐我们使用jasypt ,这个加密算法的特点是每次对同一内容加密后的结果都不一样,但解密出来的结果却是一样的

2 配置

springboot也提供了相应支持,但是需要注意版本的对应关系,下面是有人整理的对应关系

https://blog.youkuaiyun.com/u013905744/article/details/86508236

pom增加下面的配置即可

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

yml文件也需要增加配置,只需配置一下jasypt的秘钥(盐值)即可

jasypt:
   encryptor:
     #加密秘钥
     password: debugxwz

3 加密测试类、数据库连接配置

import org.jasypt.util.text.BasicTextEncryptor;

public class Test {
    public static void main(String args[]){
        BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
        //加密所需的salt(盐)
        textEncryptor.setPassword("debugxwz");
        //要加密的数据(数据库的用户名或密码)
        String username = textEncryptor.encrypt("root");
        String password = textEncryptor.encrypt("123456");
                System.out.println("username:"+username);
        System.out.println("password:"+password);
    }
}

 这里虽然加密了用户名和密码,但实际开发只加密密码也就ok了

spring:
  datasource:
    username: root
    password: ENC(9hKt5abXFE4dTsZ8XfQEjw==)
    #password: 123456
    url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
    driver-class-name: com.mysql.jdbc.Driver

这里需要注意ENC是大写,不能写错否则启动报错数据库也连不上,上述配置做完之后就弄好了,启动后日志如下:

参考资料:https://www.jianshu.com/p/838f4d2b926a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值