摘要:所以這里我們就需要對數據庫的用戶名和密碼進行加密,這也是本文的由來。本文采用對配置文件加密的相關方法,其實呢,也還有其他方案,具體的會在后面的相關文章中說明。
前言
在日前安全形勢越來越嚴重的情況下,讓我意識到在項目中存在一個我們經常忽略的漏洞,那就是我們的項目的配置文件中配置信息的安全,尤其是數據庫連接的用戶名和密碼的安全。所以這里我們就需要對數據庫的用戶名和密碼進行加密,這也是本文的由來。本文采用Jasypt對Spring Boot配置文件加密的相關方法,其實呢,也還有其他方案,具體的會在后面的相關文章中說明。
引入jasypt1.生成要加密的字符串 1.1 將數據庫的用戶名和密碼進行加密com.github.ulisesbocchio jasypt-spring-boot-starter 2.0.0
@Test public void contextLoads() { BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); //加密所需的salt(鹽) textEncryptor.setPassword("1Qaz0oKm"); //要加密的數據(數據庫的用戶名或密碼) String username = textEncryptor.encrypt("root"); String password = textEncryptor.encrypt("root"); System.out.println("username:"+username); System.out.println("password:"+password); }
輸出信息
username:NZmLHOOHX0SEjc285iG9YQ== password:1JByM5wu5o+9H1Ba2o++Pg== 2019-06-14 14:55:49.863 INFO 8904 --- [ Thread-3] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService "applicationTaskExecutor" 2019-06-14 14:55:49.863 INFO 8904 --- [ Thread-3] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit "default" 2019-06-14 14:55:49.863 INFO 8904 --- [ Thread-3] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... 2019-06-14 14:55:49.878 INFO 8904 --- [ Thread-3] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.1.2. 或者使用Maven下載好的jar包加密Mavenorgjasyptjasypt2.0.0jasypt-2.0.0.jar
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI password=1Qaz0oKm algorithm=PBEWithMD5AndDES input=root
輸出信息
----ENVIRONMENT----------------- Runtime: Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.171-b11 ----ARGUMENTS------------------- input: root algorithm: PBEWithMD5AndDES password: 1Qaz0oKm ----OUTPUT---------------------- NZmLHOOHX0SEjc285iG9YQ==
拷貝-OUTPUT-下的結果即可
2.配置properties文件將生成的加密串配置ENC(加密串)到application.properties中
server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true username: ENC(GHK23XVFNHoQQ97vIW523Q==) password: ENC(aTKef0XcG05Cfzao92EqqQ==) data-username: com.mysql.cj.jdbc.Driver jpa: show-sql: true database-platform: org.hibernate.dialect.MySQL5InnoDBDialect database: MYSQL hibernate: ddl-auto: update jasypt: encryptor: password: 1Qaz0oKm #加密所需的salt(鹽) #algorithm: PBEWithMD5AndDES # 默認加密方式PBEWithMD5AndDES,可以更改為PBEWithMD5AndTripleDES
加密方式對應的類為BasicTextEncryptor和StrongTextEncryptor
private final StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); public BasicTextEncryptor() { this.encryptor.setAlgorithm("PBEWithMD5AndDES"); }
private final StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); public StrongTextEncryptor() { this.encryptor.setAlgorithm("PBEWithMD5AndTripleDES"); }3.部署時配置salt(鹽)值
1. 為了防止salt(鹽)泄露,反解出密碼.可以在項目部署的時候使用命令傳入salt(鹽)值
java -jar -Djasypt.encryptor.password=1Qaz0oKm xxx.jar
2. 或者在服務器的環境變量里配置,進一步提高安全性
打開/etc/profile文件 vim /etc/profile 文件末尾插入 export JASYPT_PASSWORD = G0CvDz7oJn6 編譯 source /etc/profile 運行 java -jar -Djasypt.encryptor.password=${JASYPT_PASSWORD} xxx.jar
下面是一個我自己的具體實現:https://github.com/eelve/jasypt,使用Jasypt對數據庫用信息加密后,可以成功連接上數據庫
官方地址:https://github.com/ulisesbocchio/jasypt-spring-boot
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76060.html
摘要:配置文件密碼加密配置秘鑰加密算法從版本開始,默認的加密解密算法已更改為以下版本默認為上述不配置的話,其默認的秘鑰也是以上的并不是很多人理解的鹽,這是加密密鑰。思考以上的步驟中,根據的用法,基本上完成了對配置文件中密碼的加密。作者:追夢1819原文:https://www.cnblogs.com/yanfei1819/p/15565862.html版權聲明:本文為博主原創文章,轉載請附上博文鏈...
摘要:基于的架構實戰案例配置文件屬性內容加解密使用過配置文件的朋友都知道,資源文件中的內容通常情況下是明文顯示,安全性就比較低一些。,官方給出的釋意是項目也采用此加密組件,結合使用。 基于SpringCloud的Microservices架構實戰案例-配置文件屬性內容加解密 使用過SpringBoot配置文件的朋友都知道,資源文件中的內容通常情況下是明文顯示,安全性就比較低一些。打開appl...
摘要:前些天就有了一個滿足漏洞檢測的需求,想要把數據庫的明文敏感信息加密,其實也就是密碼加密,所以也就有了這篇文章,我的項目是結構,修改其實也挺簡單,廢話少說,上代碼。所以您有什么更好的加密方法歡迎留言 寫在前面 俗話說:顧客是上帝,身為程序員的我有時會直接對接客戶方提出的需求,畢竟我處在提供服務的一方,所以我也會盡量的滿足臨時的要求。前些天就有了一個滿足漏洞檢測的需求,想要把數據庫的明文敏...
摘要:這里使用的是數據庫啟動類上加上注解在啟動類中添加對包掃描掃描多個包下的可以有以下幾種方法掃描會自動加載相關配置,數據源就會自動注入到中,會自動注入到中,可以直接使用。有配置文件下的使用掃描多個包下的可以有以下幾種方法掃描 Spring-Boot 學習筆記 1 Spring-Boot 介紹 1.1 什么是Spring-Boot Spring-Boot是由Pivotal團隊提供的全新框架...
閱讀 1331·2019-08-30 15:44
閱讀 1381·2019-08-29 18:42
閱讀 433·2019-08-29 13:59
閱讀 770·2019-08-28 17:58
閱讀 2811·2019-08-26 12:02
閱讀 2414·2019-08-23 18:40
閱讀 2406·2019-08-23 18:13
閱讀 3106·2019-08-23 16:27