出於安全起見,我們會對項目中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方可連接數據庫端口。讓數據庫安全得到保障。
雲端服務器其實很難防住黑客進入我們的服務器,我們能做到的就是讓他白跑一趟。像關於支付的祕鑰、證書路徑之內的機密內容,建議放到數據庫,用的時候從數據庫拿就行。放在項目代碼中是很不安全的。