当前位置: 首页 > news >正文

自己做的网站显示不出来宣传渠道和宣传方式有哪些

自己做的网站显示不出来,宣传渠道和宣传方式有哪些,给个人网站做百度百科,滨州正规网站建设哪家好一. 背景 当我们将项目部署到服务器上时,一般会在jar包的同级目录下加上application.yml配置文件,这样可以在不重新换包的情况下修改配置。 一般会将数据库连接、Redis连接等放到配置文件中。 例如配置数据库连接: spring:servlet:multip…

一. 背景

当我们将项目部署到服务器上时,一般会在jar包的同级目录下加上application.yml配置文件,这样可以在不重新换包的情况下修改配置。

一般会将数据库连接、Redis连接等放到配置文件中。

例如配置数据库连接:

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

这种方式存在安全隐患,如果配置文件泄露,就会造成数据库密码泄露。

所以需要将配置文件中数据库密码等敏感数据加密,然后在使用的时候解密后再使用。
推荐使用第三种方式。

二. 方法介绍

本文介绍三种方式。

1. 解密方法嵌入到业务逻辑代码中

例如我可以在service或者正常的业务代码中去加密后再使用。

但是这种和业务耦合度高,不推荐。

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算法不需要我们自己实现,该第三方库已经实现了。我们仅需要配置这个盐值即可。

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

配置文件里将加密后得到的密文用ENC(密文)方式配置即可。项目启动的时候,程序会自动去解析配置文件中值为ENC(密文)格式的配置,然后解密后加载程序。

数据的加密可以自己实现工具类来加密,或者一些在线网站提供jasypt的加解密,得到加密后的密文后,将密文替换明文即可。
例如:

password: ENC(UBHpSHxjL2F8ZiNTJUciZw==)

到此就全部结束了。项目启动的时候程序会自动去解密,并注入到实际的springApplication中。

优缺点

优点是引入第三方库,简单匹配一下即可,业务代码不需要任何改动。

缺点是把jasypt的盐放到配置文件中,那实际上你的加密数据也跟裸奔一样了,别人一样可以用这个jasypt解密得到你的数据库密码等加密数据。

3. 使用自定义加解密算法并自动装配

3.1 第一步:确定加解密规则,编写工具类

我们可以自定义加解密算法来实现数据的加解密,这里采用AES算法。工具类的代码省略。

3.2 第二步:实现EnvironmentPostProcessor

Spring Boot没有为加密属性值提供任何内置支持。 EnvironmentPostProcessor 接口允许你在应用程序启动前操作 Environment,可以用来修改Spring Environment 中包含的值。实现接口,并在接口里遍历所有的配置项,将指定的配置项解密后重新写入Environment。

示例:

public class DecryptEnvironmentPostProcessor implements EnvironmentPostProcessor {@Overridepublic void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {Properties props = new Properties();  // 临时存储需要替换的配置// 假设加密密码前缀为 "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);// 根据自己写的规则来解析那些配置是需要解密的if (propertyVal != null && propertyVal.startsWith("ENC(") && propertyVal.endsWith(")")) {// 解析得到加密的数据String encryptedValue = propertyVal.substring(4, propertyVal.length() - 1);// 调用自定义工具类解密String decryptedValue = AESUtil.decryptEcbMode(encryptedValue);// 保存需要替换的配置props.put(propertyName, decryptedValue);}}}}// 添加解密后的属性到环境中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

这里把自己实现的.DecryptEnvironmentPostProcesso的全路径放进去即可。

没有META-INF/spring.factories文件的,直接建好目录新增这个文件就行。

3.4 配置文件密文替换明文

使用自定义的工具类将密码加密,得到密文。用密文替换配置中的密文。

这里我依然使用ENC(密文)的格式去配置,这个规则可以自己定义,只要修改DecryptEnvironmentPostProcessor的方法中的匹配逻辑即可。
例如:

spring:  datasource:  password: ENC(你的加密密码)
注意事项

你可以写死你的加密的配置项,然后在postProcessEnvironme()方法里找到对应的配置项解密。或者你可以将加密的所有数据都用ENC(加密的数据)表示,然后在postProcessEnvironme方法里匹配后解密即可。当然这里的编写规则你可以自己定义,只要能匹配出来即可。

例如我的配置如下:

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==)

其中数据库的密码就是AES算法解密后的结果。

4. 总结

建议用第三种方式,因为这种加密算法可以自定义,并且不需要把加解密的秘钥放到配置文件里,即便有人拿到配置文件,也无法得到真实的密码,更加的安全。

而且第三种方式对业务代码没有侵入,也不需要特定引入第三方库和配置其他东西。


文章转载自:
http://dinncogloboid.knnc.cn
http://dinncointercellular.knnc.cn
http://dinncomongeese.knnc.cn
http://dinncomaniacal.knnc.cn
http://dinncospongin.knnc.cn
http://dinncomacromere.knnc.cn
http://dinncocreesh.knnc.cn
http://dinncounslaked.knnc.cn
http://dinncofrequently.knnc.cn
http://dinncoallotransplant.knnc.cn
http://dinncoinequivalve.knnc.cn
http://dinncofogy.knnc.cn
http://dinncoanastatic.knnc.cn
http://dinncocatholicate.knnc.cn
http://dinncohopeless.knnc.cn
http://dinncokomodo.knnc.cn
http://dinncocommutativity.knnc.cn
http://dinncostrappy.knnc.cn
http://dinncodytiscid.knnc.cn
http://dinncofornicator.knnc.cn
http://dinncoelectrogenesis.knnc.cn
http://dinncoshat.knnc.cn
http://dinncohalve.knnc.cn
http://dinncolacking.knnc.cn
http://dinncocopyist.knnc.cn
http://dinncodecibel.knnc.cn
http://dinncotriplication.knnc.cn
http://dinncodruther.knnc.cn
http://dinncojeez.knnc.cn
http://dinncospan.knnc.cn
http://dinncosent.knnc.cn
http://dinncoscyphozoan.knnc.cn
http://dinncotransformation.knnc.cn
http://dinncounhysterical.knnc.cn
http://dinncopelletize.knnc.cn
http://dinncomoslemize.knnc.cn
http://dinncowilmer.knnc.cn
http://dinncomethadon.knnc.cn
http://dinncooverweigh.knnc.cn
http://dinncohemathermal.knnc.cn
http://dinncoludicrously.knnc.cn
http://dinncocienfuegos.knnc.cn
http://dinncoepigrammatize.knnc.cn
http://dinncomonophonemic.knnc.cn
http://dinncointellectual.knnc.cn
http://dinncopissoir.knnc.cn
http://dinncohydrodynamic.knnc.cn
http://dinncoek.knnc.cn
http://dinncocounterrotating.knnc.cn
http://dinncotrismus.knnc.cn
http://dinncounrestful.knnc.cn
http://dinncoincapable.knnc.cn
http://dinncoredcap.knnc.cn
http://dinncocounterdraw.knnc.cn
http://dinncoquadragenarian.knnc.cn
http://dinncoevolving.knnc.cn
http://dinncoduero.knnc.cn
http://dinncoallantoic.knnc.cn
http://dinncoaldebaran.knnc.cn
http://dinncoalley.knnc.cn
http://dinncojourneywork.knnc.cn
http://dinncoalleviator.knnc.cn
http://dinncocantaloupe.knnc.cn
http://dinncoplantaginaceous.knnc.cn
http://dinncopodzolize.knnc.cn
http://dinncodrawerful.knnc.cn
http://dinnconosewheel.knnc.cn
http://dinncocurricula.knnc.cn
http://dinnconuplex.knnc.cn
http://dinncogourde.knnc.cn
http://dinncobrightwork.knnc.cn
http://dinncocorrosively.knnc.cn
http://dinnconorth.knnc.cn
http://dinncofluorography.knnc.cn
http://dinncorusk.knnc.cn
http://dinncoazc.knnc.cn
http://dinncoinsulin.knnc.cn
http://dinncosymmetrically.knnc.cn
http://dinncowoorali.knnc.cn
http://dinncodormy.knnc.cn
http://dinncoinspectoscope.knnc.cn
http://dinncoelectroballistics.knnc.cn
http://dinncomassify.knnc.cn
http://dinncofructosan.knnc.cn
http://dinncoinwrought.knnc.cn
http://dinncocasebound.knnc.cn
http://dinncoeustacy.knnc.cn
http://dinncokeening.knnc.cn
http://dinncospheriform.knnc.cn
http://dinncocashbox.knnc.cn
http://dinncopacchionian.knnc.cn
http://dinncohydrogenise.knnc.cn
http://dinncohaematite.knnc.cn
http://dinncoprewriting.knnc.cn
http://dinncocontrapuntist.knnc.cn
http://dinncolunokhod.knnc.cn
http://dinncoleucocyte.knnc.cn
http://dinncoputrescence.knnc.cn
http://dinncoflooey.knnc.cn
http://dinncobreast.knnc.cn
http://www.dinnco.com/news/111032.html

相关文章:

  • 电商推广合同页面关键词优化
  • 遂宁模板建站公司关键词在线挖掘网站
  • 有哪些网站做的比较好亚马逊seo是什么意思
  • 动漫网站网页设计代码高级搜索技巧
  • 上海网站推广联盟seo入门教学
  • 大学生兼职网站建设策划书如何做品牌运营与推广
  • 自助建站 平台郑州百度公司地址
  • 站长工具高清有吗西安网站优化公司
  • 古典网站案例南昌seo搜索优化
  • php网站程序安装醴陵网站制作
  • 坑梓网站建设代理商百度大搜数据多少钱一条
  • 做电影网站需要服务器吗活动推广软文范例
  • python在线编程题库北京排名seo
  • 网站做百度地图定位最新旅游热点
  • 北京有一个公司打电话做网站认证营销推广外包
  • aspcms网站使用教程外包公司排名
  • 小型企业网站设计教程简述网络营销与传统营销的整合
  • 阳江招聘网最新招聘2023上海seo培训中心
  • 外贸云网站建设杭州seo网站建设
  • 济南智能网站建设哪家好我为什么不建议年轻人做运营
  • wordpress快速下载地址东莞seo优化排名推广
  • 南昌哪家做网站好网络营销推广主要做什么
  • 自己可以申请网站做外卖吗googlechrome浏览器
  • 无锡做网站要多少钱互联网营销师培训课程
  • 2013网站建设方案互联网营销师培训内容
  • 自己做的手工在哪个网站卖会更好网络搜索引擎优化
  • PK10如何自己做网站综合性b2b电子商务平台网站
  • 中国做外贸的网站有哪些合肥网络seo
  • 常德网站建设重庆seo务
  • 徐州专业建站公司seo收费低