springboot项目配置加密,项目安全

出于安全起见,我们会对项目中application.preperties文件配置的内容加密。并且尽量将springboot框架升级到高版本(稳定版本)

将springboot框架从1.4.5升级到2.2.4以后。起初使用的jasypt3.0.1的工具给项目内容加密。

顺便在这里给大家介绍一个js代码加密的网站:http://tool.chinaz.com/js.aspx。使用加密压缩以后的代码替换原来js文件里面的js脚本代码即可。本人测试可行。

jasypt3.0.1加密方法:

1. 将jasypt工具包导入,并且增加maven自动加密工具。

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

<build>
  <plugins>
    <plugin>
      <groupId>com.github.ulisesbocchio</groupId>
      <artifactId>jasypt-maven-plugin</artifactId>
      <version>3.0.0</version>
    </plugin>
  </plugins>
</build>

2. 将application.preperties中需要加密的内容用DEC(加密内容)包裹。

     如:spring.thymeleaf.prefix=DEC(classpath:/templates/)

3. 然后使用idea打开项目目录下的命令行,执行命令,其中password对应的字符串jiami就是我们的钥匙:

mvn jasypt:encrypt -Djasypt.encryptor.password="jiami"

 如果出现一些jar包报错的话,就到pom.xml文件中,将所有报错的jar包全部注释起来!阿里的jar包几乎都会报错!

4. 成功执行上面命令以后,将pom.xml中注释掉的阿里的jar包全部放开注释。这时候你会发现application.preperties文件中的DEC(classpath:/templates)已经变成ENC(*******密文***)

5.上面说明我们加密成功了,但是还无法启动,所以我们要将钥匙放到项目启动文件:

在启动文件main方法内增加钥匙:

System.setProperty("jasypt.encryptor.password", "jiami");

或者在配置文件application.perperties文件中增加钥匙配置:

jasypt.encryptor.password=jiami

6.启动项目,为了安全,我们再启动项目以后进入配置钥匙的类或文件中,将我们增加的钥匙内容删除掉,不会影响项目正常运行。

注意:本人实战发现jasypt3.0.0工具不是太稳定。有时候项目运行运行的会出现无法解密启动项目的问题。就需要重新加密。

使用:jasypt2.0.0版本的工具加密。

直接在启动类增加代码:

        BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
        //加密所需的salt(盐)
        textEncryptor.setPassword("jiami");
        //要加密的数据(数据库的用户名或密码)
        String url = textEncryptor.encrypt("数据库链接");
        String username = textEncryptor.encrypt("root");
        String password = textEncryptor.encrypt("123123");
        System.out.println("url:"+url);
        System.out.println("username:"+username);
        System.out.println("password:"+password);

将打印出来的加密内容加上ENC如:ENC(加密后的内容),替换掉application.preperties的内容,并且在其中增加jasypt.encryptor.password=jiami。就可以了。

记得启动以后删除jasypt.encryptor.password=jiami这段内容哦!

通过加密后,我们可以防止数据库连接、数据库密码等外泄。同时再在阿里云安全组中配置指定IP方可连接数据库端口。让数据库安全得到保障。

云端服务器其实很难防住黑客进入我们的服务器,我们能做到的就是让他白跑一趟。像关于支付的秘钥、证书路径之内的机密内容,建议放到数据库,用的时候从数据库拿就行。放在项目代码中是很不安全的。

 

 

简单说也就5个步骤:

1.导包:pom文件中导入:

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

2. 在启动类主函数中运行代码得到密文,将要加密的内容放入,得到加密后的密文:

public static void main(String[] args) {
    SpringApplication.run(PiyinApplication.class, args);

    //增加下面将明文加密成密文的代码(加密完成后删除)
    BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
    //加密所需的salt(盐)
    textEncryptor.setPassword("zidingyi");
    //要加密的数据(数据库的用户名或密码)
    String url = textEncryptor.encrypt("数据库url");
    String username = textEncryptor.encrypt("用户名");
    String password = textEncryptor.encrypt("密码");
    System.out.println("url:"+url);
    System.out.println("username:"+username);
    System.out.println("password:"+password);

}

3.将控制台打印出来的密文用ENC()包裹替换配置文件中的明文,如:

spring.datasource.url=ENC(XkuXP6r6j3RIouXIvpOnKT5ik/GAz7SrMn6snO...)

4.将盐也就是上面的"zidingyi"这个字符串放入配置文件顶部(这个相当于程序启动解密的钥匙):

jasypt.encryptor.password=zidingyi

5.重新启动项目后,去掉配置文件顶部的:jasypt.encryptor.password=zidingyi。加密完成!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值