中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

自己做的網(wǎng)站顯示不出來國際最新新聞熱點事件

自己做的網(wǎng)站顯示不出來,國際最新新聞熱點事件,蘇州web網(wǎng)站建設(shè),網(wǎng)頁設(shè)計教學(xué)網(wǎng)站一. 背景 當我們將項目部署到服務(wù)器上時,一般會在jar包的同級目錄下加上application.yml配置文件,這樣可以在不重新?lián)Q包的情況下修改配置。 一般會將數(shù)據(jù)庫連接、Redis連接等放到配置文件中。 例如配置數(shù)據(jù)庫連接: spring:servlet:multip…

一. 背景

當我們將項目部署到服務(wù)器上時,一般會在jar包的同級目錄下加上application.yml配置文件,這樣可以在不重新?lián)Q包的情況下修改配置。

一般會將數(shù)據(jù)庫連接、Redis連接等放到配置文件中。

例如配置數(shù)據(jù)庫連接:

spring:servlet:multipart:max-file-size: 10MB # 文件大小限制max-request-size: 100MB # 請求大小限制datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghaiusername: rootpassword: 123456

這種方式存在安全隱患,如果配置文件泄露,就會造成數(shù)據(jù)庫密碼泄露。

所以需要將配置文件中數(shù)據(jù)庫密碼等敏感數(shù)據(jù)加密,然后在使用的時候解密后再使用。
推薦使用第三種方式。

二. 方法介紹

本文介紹三種方式。

1. 解密方法嵌入到業(yè)務(wù)邏輯代碼中

例如我可以在service或者正常的業(yè)務(wù)代碼中去加密后再使用。

但是這種和業(yè)務(wù)耦合度高,不推薦。

2. 使用jasypt

2.1 第一步:pom引入依賴
<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>2.1.2</version>
</dependency>
2.2 第二步:application.yml中增加jasypt配置

配置文件里配置該算法加解密的鹽值。jaspypt算法不需要我們自己實現(xiàn),該第三方庫已經(jīng)實現(xiàn)了。我們僅需要配置這個鹽值即可。

# 如果密文加鹽,需要配置鹽值
jasypt:encryptor:password: ueiej@8e8r
2.3 第三步:application.yml中密文替代明文。

配置文件里將加密后得到的密文用ENC(密文)方式配置即可。項目啟動的時候,程序會自動去解析配置文件中值為ENC(密文)格式的配置,然后解密后加載程序。

數(shù)據(jù)的加密可以自己實現(xiàn)工具類來加密,或者一些在線網(wǎng)站提供jasypt的加解密,得到加密后的密文后,將密文替換明文即可。
例如:

password: ENC(UBHpSHxjL2F8ZiNTJUciZw==)

到此就全部結(jié)束了。項目啟動的時候程序會自動去解密,并注入到實際的springApplication中。

優(yōu)缺點

優(yōu)點是引入第三方庫,簡單匹配一下即可,業(yè)務(wù)代碼不需要任何改動。

缺點是把jasypt的鹽放到配置文件中,那實際上你的加密數(shù)據(jù)也跟裸奔一樣了,別人一樣可以用這個jasypt解密得到你的數(shù)據(jù)庫密碼等加密數(shù)據(jù)。

3. 使用自定義加解密算法并自動裝配

3.1 第一步:確定加解密規(guī)則,編寫工具類

我們可以自定義加解密算法來實現(xiàn)數(shù)據(jù)的加解密,這里采用AES算法。工具類的代碼省略。

3.2 第二步:實現(xiàn)EnvironmentPostProcessor

Spring Boot沒有為加密屬性值提供任何內(nèi)置支持。 EnvironmentPostProcessor 接口允許你在應(yīng)用程序啟動前操作 Environment,可以用來修改Spring Environment 中包含的值。實現(xiàn)接口,并在接口里遍歷所有的配置項,將指定的配置項解密后重新寫入Environment。

示例:

public class DecryptEnvironmentPostProcessor implements EnvironmentPostProcessor {@Overridepublic void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {Properties props = new Properties();  // 臨時存儲需要替換的配置// 假設(shè)加密密碼前綴為 "ENC(",后綴為 ")"MutablePropertySources propertySources = environment.getPropertySources();for (PropertySource<?> propertySource : propertySources) {if (propertySource instanceof EnumerablePropertySource) {EnumerablePropertySource<?> enumerablePropertySource = (EnumerablePropertySource<?>) propertySource;String[] propertyNames = enumerablePropertySource.getPropertyNames();// 遍歷所有配置key:valuefor (String propertyName : propertyNames) {String propertyVal = environment.getProperty(propertyName);// 根據(jù)自己寫的規(guī)則來解析那些配置是需要解密的if (propertyVal != null && propertyVal.startsWith("ENC(") && propertyVal.endsWith(")")) {// 解析得到加密的數(shù)據(jù)String encryptedValue = propertyVal.substring(4, propertyVal.length() - 1);// 調(diào)用自定義工具類解密String decryptedValue = AESUtil.decryptEcbMode(encryptedValue);// 保存需要替換的配置props.put(propertyName, decryptedValue);}}}}// 添加解密后的屬性到環(huán)境中if (!props.isEmpty()) {PropertiesPropertySource pps = new PropertiesPropertySource("decryptedProperties", props);environment.getPropertySources().addFirst(pps);}}
}
3.3 自動裝配

resources/META-INF/spring.factories中注冊EnvironmentPostProcessor。

org.springframework.boot.env.EnvironmentPostProcessor=\  
your.package.DecryptEnvironmentPostProcessor

這里把自己實現(xiàn)的.DecryptEnvironmentPostProcesso的全路徑放進去即可。

沒有META-INF/spring.factories文件的,直接建好目錄新增這個文件就行。

3.4 配置文件密文替換明文

使用自定義的工具類將密碼加密,得到密文。用密文替換配置中的密文。

這里我依然使用ENC(密文)的格式去配置,這個規(guī)則可以自己定義,只要修改DecryptEnvironmentPostProcessor的方法中的匹配邏輯即可。
例如:

spring:  datasource:  password: ENC(你的加密密碼)
注意事項

你可以寫死你的加密的配置項,然后在postProcessEnvironme()方法里找到對應(yīng)的配置項解密?;蛘吣憧梢詫⒓用艿乃袛?shù)據(jù)都用ENC(加密的數(shù)據(jù))表示,然后在postProcessEnvironme方法里匹配后解密即可。當然這里的編寫規(guī)則你可以自己定義,只要能匹配出來即可。

例如我的配置如下:

spring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghaiusername: rootpassword: ENC(UBHpSHxjL2F8ZiNTJUciZw==)

其中數(shù)據(jù)庫的密碼就是AES算法解密后的結(jié)果。

4. 總結(jié)

建議用第三種方式,因為這種加密算法可以自定義,并且不需要把加解密的秘鑰放到配置文件里,即便有人拿到配置文件,也無法得到真實的密碼,更加的安全。

而且第三種方式對業(yè)務(wù)代碼沒有侵入,也不需要特定引入第三方庫和配置其他東西。

http://www.risenshineclean.com/news/7152.html

相關(guān)文章:

  • WordPress碎語山東服務(wù)好的seo
  • 一個完整的動態(tài)網(wǎng)站開發(fā)東莞seo整站優(yōu)化火速
  • dede5.7 做的網(wǎng)站 下 加一個discuz論壇網(wǎng)站統(tǒng)計分析工具
  • 德陽網(wǎng)站開發(fā)熊掌號互聯(lián)網(wǎng)推廣是干什么的
  • 上傳網(wǎng)站到google什么是百度權(quán)重
  • 代碼網(wǎng)站開發(fā)seo搜索引擎優(yōu)化是什么意思
  • 建設(shè)企業(yè)網(wǎng)站可行性分析百度一下進入首頁
  • wordpress門戶網(wǎng)站模板下載互聯(lián)網(wǎng)營銷做什么
  • 做自動采集電影網(wǎng)站有什么處罰上海網(wǎng)絡(luò)推廣培訓(xùn)機構(gòu)
  • 專業(yè)做網(wǎng)站優(yōu)化個人網(wǎng)站模板
  • 茶網(wǎng)站開發(fā)的意義目的建站之星官方網(wǎng)站
  • 菏澤網(wǎng)站建設(shè)效果網(wǎng)址大全2345
  • 影響網(wǎng)站建設(shè)價格的因素有比較經(jīng)典的營銷案例
  • 購物網(wǎng)站 購物車界面如何做html做一個簡單的網(wǎng)頁
  • 1920的做網(wǎng)站做多大重慶seo推廣運營
  • 網(wǎng)站服務(wù)器數(shù)據(jù)庫百度推廣找誰做靠譜
  • wordpress仿今日主題網(wǎng)站優(yōu)化包括哪些
  • 怎么進入wordpress后臺紹興網(wǎng)站快速排名優(yōu)化
  • cmseasy做網(wǎng)站簡單嗎營銷策劃培訓(xùn)
  • 商丘市網(wǎng)站建設(shè)推廣福建企業(yè)seo推廣
  • 青島網(wǎng)站建設(shè)和優(yōu)化網(wǎng)絡(luò)營銷師有前途嗎
  • 網(wǎng)站建設(shè) 石家莊網(wǎng)站建設(shè)哪家公司好
  • 廣告公司做網(wǎng)站寧波seo網(wǎng)絡(luò)推廣代理公司
  • 嘉興 網(wǎng)站制作網(wǎng)站seo分析案例
  • 東莞南城網(wǎng)站開發(fā)公司關(guān)鍵詞的優(yōu)化和推廣
  • 哪個網(wǎng)站做任務(wù)賺錢多org域名注冊
  • 怎樣做國外網(wǎng)站推廣東莞網(wǎng)站建設(shè)推廣公司
  • 權(quán)威的合肥網(wǎng)站建設(shè)網(wǎng)站運營指標
  • 阿里巴巴網(wǎng)站維護怎么做關(guān)鍵詞seo排名公司
  • 網(wǎng)站布局結(jié)構(gòu)主要分為汕頭seo收費