一般項目的配置文件裏的信息都是明文的,導致有時候比較敏感的信息也直接暴露得超級明顯,比如SQL的鏈接 賬號 密碼等。可能作爲開發者,開發環境這些暴露了也沒多大關係,但是生產環境就需要謹慎了!
話不多說,我們可以選擇國外牛人寫的SpringBoot的工具 jasypt 進行加密,項目是開源的,Github地址如下:https://github.com/ulisesbocchio/jasypt-spring-boot
1、在Maven項目中引入依賴
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
2、同時需要在application.yml配置文件中先配置密碼,因爲工具是使用該密碼進行加密或者解密的,所以必須保證配置中加密後的串是使用同一密碼加密的,否則項目啓動時也解密不了。
jasypt:
encryptor:
password: 123456
3、 可以在測試用例中,對原信息進行加密,使用方法很簡單。簡單的Demo如下:
@RunWith(SpringRunner.class)
@SpringBootTest
@WebAppConfiguration
public class Test {
@Autowired
StringEncryptor encryptor;
@Test
public void getPass() {
#直接調用加密的方法
String mysql = encryptor.encrypt("mysql-username|mysql-password");
}
}
4、最後在配置文件中放入加密後的字符串就行,如上面的 “mysql” 串
url: ENC(mysql==)
username: ENC(mysql==)
password: ENC(mysql=)
注意 ENC() 是固定的寫法,mysql== 就是你加密後的對應串。
這樣就可以假裝的把敏感信息加密了,哈哈哈之所以說假裝。可能很多人都會有疑問,既然加密的密碼是明文的存在配置文件中,別人一樣可以輕鬆的解密出來。沒錯,確實是這樣。這種加密的方式只能說不能讓人眼一下子看出賬號密碼。只是僞裝了一下,如果hacker拿到了你的項目權限,那麼做任何加密其實都沒有大作用了。所以做好項目和服務器的安全問題纔是最基本的也是最重要的。
OK!OK!OK!