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