成都游戏网站建设,昆明seo网站建设费用,企业网站建设方案 word,舆情分析是个什么行业⚔️ 项目配置信息存放在哪#xff1f;
在日常开发工作中#xff0c;我们经常需要使用到各种敏感配置#xff0c;如数据库密码、各厂商的 SecretId、SecretKey 等敏感信息。 通常情况下#xff0c;我们会将这些敏感信息明文放到配置文件中#xff0c;或者放到配置中心中。…⚔️ 项目配置信息存放在哪
在日常开发工作中我们经常需要使用到各种敏感配置如数据库密码、各厂商的 SecretId、SecretKey 等敏感信息。 通常情况下我们会将这些敏感信息明文放到配置文件中或者放到配置中心中。 然而这种做法存在严重的安全隐患 安全措施有哪些
使用环境变量替代明文配置信息 使用环境变量来替代配置文件中的明文敏感信息。在部署应用程序时可以通过设置环境变量来传递敏感信息。加密配置文件 使用对称加密或非对称加密来加密配置文件以保护敏感信息。在加密配置文件时必须指定加密算法和密钥以及解密时使用的密钥。禁止将配置文件提交到代码仓库 为了防止配置文件泄露应该禁止将配置文件提交到代码仓库中。可以将配置文件添加到 Gitignore 文件中防止将其提交到代码仓库中。使用安全的存储方式 如果将敏感信息存储在配置文件中应该确保使用安全的存储方式。可以将配置文件存储在受保护的目录中并限制访问该目录的权限。限制访问配置文件的权限 限制可以访问配置文件的用户和进程的权限以防止未经授权的用户和进程访问配置文件。审计配置文件的访问记录 定期审计配置文件的访问记录以检测是否存在未经授权的访问。
目标 学会用Jasypt 库来加密配置文件 文章目录 ⚔️ 项目配置信息存放在哪 安全措施有哪些目标学习步骤一、了解 JasyptJasyptJava Simplified Encryption库 二、引入 Jasypt 依赖建一个SpringBoot demo引入 Jasypt 依赖注意这里只标 Jasypt 依赖没说不用其他的依赖哈 三、实现加解密工具类 JasyptUtil 四、进行一波单元测试拿 CSNZ 这个字符串加密得到的结果是OJsBWVePwbelr5XKuWXhYw 拿 OJsBWVePwbelr5XKuWXhYw 这个字符串解密得到的结果是 五、敏感配置进行加密处理修改加密工具库密钥使用参数传入配置文件信息配置启动类读取配置文件信息并打印 六、项目启动传入参数大功告成 学习步骤 1、了解 Jasypt 2、引入 Jasypt 依赖 3、实现加解密工具类 JasyptUtil 4、先进行一波单元测试 5、敏感配置进行加密处理 6、项目启动 一、了解 Jasypt
JasyptJava Simplified Encryption库
Jasypt 是一个开源的 Java 加密库可以为应用程序提供加密和解密功能
二、引入 Jasypt 依赖
建一个SpringBoot demo引入 Jasypt 依赖注意这里只标 Jasypt 依赖没说不用其他的依赖哈 propertiesjasypt-spring-boot-starter.version3.0.4/jasypt-spring-boot-starter.version/propertiesdependencygroupIdcom.github.ulisesbocchio/groupIdartifactIdjasypt-spring-boot-starter/artifactIdversion${jasypt-spring-boot-starter.version}/version/dependency三、实现加解密工具类 JasyptUtil
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.jasypt.properties.PropertyValueEncryptionUtils;
import org.jasypt.util.text.BasicTextEncryptor;
import org.springframework.beans.factory.annotation.Value;NoArgsConstructor(access AccessLevel.PRIVATE)
public final class JasyptUtil {/*** 加密时的密钥*/private static String PRIVATE_KEY Evw3vbDt;private static final String PREFIX ENC(;private static final String SUFFIX );private static BasicTextEncryptor basicTextEncryptor new BasicTextEncryptor();static {basicTextEncryptor.setPassword(PRIVATE_KEY);}/*** 明文加密*/public static String encrypt(String plaintext) {return basicTextEncryptor.encrypt(plaintext);}/*** 解密*/public static String decrypt(String ciphertext) {ciphertext PREFIX ciphertext SUFFIX;if (PropertyValueEncryptionUtils.isEncryptedValue(ciphertext)) {String plaintext PropertyValueEncryptionUtils.decrypt(ciphertext, basicTextEncryptor);return plaintext;}return ;}
}四、进行一波单元测试
拿 “CSNZ” 这个字符串加密
Test
public void testEncrypt() {String encrypt JasyptUtil.encrypt(CSNZ);System.out.println(encrypt);
}得到的结果是OJsBWVePwbelr5XKuWXhYw
拿 “OJsBWVePwbelr5XKuWXhYw” 这个字符串解密
Test
public void testDecrypt() {String decrypt JasyptUtil.decrypt(OJsBWVePwbelr5XKuWXhYw);System.out.println(decrypt);}得到的结果是 五、敏感配置进行加密处理
修改加密工具库密钥使用参数传入
Value(${jasypt.passKey})
private static String PRIVATE_KEY;配置文件信息配置
server:port: 8080encrypt:test:# 此处是密码的密文文中示例的就是CSNZ的密文要用 ENC() 进行包裹name: ENC(OJsBWVePwbelr5XKuWXhYw)# 加密配置
jasypt:encryptor:# 指定加密密钥生产环境需要放到启动参数password: ${jasypt.passKey}# 指定解密算法需要和加密时使用的算法一致algorithm: PBEWithMD5AndDES# 指定 initialization vector 类型iv-generator-classname: org.jasypt.iv.NoIvGenerator启动类读取配置文件信息并打印
SpringBootApplication
public class Application implements InitializingBean {public static void main(String[] args) {SpringApplication.run(Application.class, args);}Value(${encrypt.test.name})private String name;Overridepublic void afterPropertiesSet() throws Exception {System.err.println(程序启动...);System.out.println(name);}
}六、项目启动
传入参数 大功告成