网络安全——SpringBoot配置文件明文加密

信铁寒胜:这边文章真的说得挺好的。

XTHS:第一步、XTHS:第二步、XTHS:第三步、XTHS:第四步 !就可以实现了。(但是前提,你要先对你的文本进行加密,然后按照ENC(加密文本),放到配置文件中)

一、前言

在日常开发中,项目中会有很多配置文件。比如SpringBoot项目核心的数据库配置、Redis账号密码配置都在propertiesyml配置文件

中。 如果这些信息以明文的方式存储,你的电脑被拿去修理,就会容易泄露,一旦被其他人获取到……你懂得…… 那么如何将配置文件

中的明文信息加密存储就变得至关重要,让我们一起来看下吧。

二、加密方式介绍

你想给你的兄弟分享你的考验资料,为了保证安全性,你选择使用加密。

为了保证安全性不能让人随便看到,是首先使用对称加密。你给它设置一个了密码。但是你在发送过程中内容被隔壁张三截获,在你告知

你兄弟密码的过程,又被截获,然后……你的考验资料泄露…

你被你兄弟臭骂了一顿,你灵机一动使用了另外一种方式:非对称加密。首先你让兄弟准备两把钥匙,自己留一把,然后另一把传输给你

使用它内容加密,最后再把加密的内容传输给你兄弟。这过程无论是钥匙还是加密内容都不担心被截获,因为只有你兄弟手中的那把钥匙

才能解密。你兄弟安全的收到考验资料,并没有泄露。你以为这种方式却对的安全,可以高枕无忧了……

但是有天你的兄弟背叛了你,把你的考验资料公之于众!

此时你才恍然大悟,这世界上根本没有绝对安全的加密方式!再可靠的加密,也挡不住捉摸不透的人心! 所以你决定,将考验资料永久

封存!你选择了哈希加密这种方式,它只管加密,不管解密!

(1)对称加密:

对称加密就相当于一个带锁宝箱,这个钥匙就是密钥(或者被称为盐值)。如果你想让别人想看的话,必须把钥匙给对应的人。这是最常

见的、最方便的加密方式。常见的对称加密算法包括 DES3DESAES

优点:
  • 强度和速度: 对称加密的优点是速度快,适用于大量数据的加密和解密。
缺点:

  秘钥管理: 对称加密的关键在于密钥的管理。为了确保安全性,密钥必须在发送者和接收者之间安全地共享。但是,如果共享又是

一个问题,密钥一旦泄露,安全防线被攻陷,这又是个问题!。

(2)非对称加密:

你手中的钥匙被称为公钥,用来把宝箱锁上。你兄弟手中的钥匙被称为私钥,要想打开宝箱,必须要有对应的私钥才行!

优点:
  • 安全性: 非对称加密提供了更高的安全性,因为私钥是保密的,只有拥有私钥的人可以解密密文。
  • 密钥交换: 非对称加密可以用于安全地交换对称加密的密钥,从而解决了对称加密中秘钥分发的问题。
缺点:
  • 性能: 非对称加密通常比对称加密慢得多,因为涉及复杂的数学运算。
  • 复杂性: 使用非对称加密需要更多的计算资源和算法支持。

(3)哈希函数:

哈希函数主要用于数据完整性验证、密码存储、数字签名等。但是,由于哈希函数的单向性质,不能直接用于加密解密。

优点:
  • 不可逆性: 哈希函数是不可逆的,即无法从哈希值还原出原始数据,这增加了数据的安全性,特别适用于密码存储等场景。
  • 高效性: 哈希函数通常非常快速,对于大量数据的处理非常高效。
  • 固定长度输出: 无论输入数据的大小如何,哈希函数的输出长度是固定的,这使得处理结果更加一致。
  • 散列均匀性: 好的哈希函数应该将不同的输入映射到均匀分布的输出空间,避免冲突。
  • 数据完整性验证: 通过比较原始数据和哈希值,可以验证数据是否在传输或存储过程中被篡改。
缺点:

 不可恢复性: 由于哈希函数是不可逆的,一旦数据被哈希化,就无法从哈希值还原出原始数据。这在某些应用场景下可能是缺点,

比如需要解密数据的情况。

冲突可能性: 哈希函数的输出是有限的,因此不同的输入可能会产生相同的哈希值,这被称为冲突。虽然好的哈希函数会减小冲突

的可能性,但仍然需要考虑。

彩虹表攻击: 针对较弱的哈希函数,攻击者可能使用预先计算的彩虹表来找到哈希值的原始数据。

哈希碰撞: 哈希碰撞指的是两个不同的输入产生相同的哈希值,攻击者可能利用这种情况来实现欺骗或篡改。

### SpringBoot与Vue结合使用HTTPS的配置及实现方案 #### 后端SpringBoot HTTPS配置 在SpringBoot项目中启用HTTPS协议,可以通过`application.yml`文件中的SSL配置来完成。具体来说,在`server.ssl`部分设置证书路径、密码以及密钥存储类型等参数。 以下是具体的配置示例: ```yaml server: port: 8833 servlet: context-path: / ssl: enabled: true key-store: classpath:www.abc.cn.jks key-password: 1abc2def key-store-password: 1abc2def key-store-type: jks ``` 上述配置启用了服务器上的SSL功能,并指定了JKS格式的密钥库及其相关属性[^1]。 #### 前端Vue HTTPS适配 对于前端Vue应用,当其通过HTTPS连接到后端服务时,需确保API调用地址为HTTPS协议下的URL。通常情况下,可以利用环境变量或者代理方式解决跨域问题并强制使用安全通道。 如果采用axios作为HTTP客户端,则可以在创建实例时指定基础URL和拦截器处理逻辑如下所示: ```javascript import axios from 'axios'; const service = axios.create({ baseURL: "https://yourdomain.com/api", // 替换为目标域名的实际值 timeout: 5000, }); // 请求拦截器 service.interceptors.request.use(config => { const token = localStorage.getItem('token'); // 获取本地存储Token if (token) config.headers.Authorization = `Bearer ${token}`; return config; }, error => Promise.reject(error)); export default service; ``` 此代码片段定义了一个基于Axios的服务对象,默认所有的请求都会走HTTPS协议,并且加入了身份验证机制以便于保护数据交换过程的安全性[^1]。 #### 数据加密增强安全性 为进一步提高通信过程中敏感信息传递的安全等级,可考虑引入自定义注解方法对特定接口实施参数加解密操作。例如下面展示了一种可能的设计模式——@DecryptParams注解用于声明哪些字段应该被自动解码后再交给控制器层进一步解析: ```java @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface DecryptParams { /** * 拦截解密的参数名称 * * @return 参数名数组 */ String[] paramNames(); } ``` 通过这种方式能够有效防止中间人攻击(MitM),即使网络流量被捕获也无法轻易获取原始明文内容[^2]。 --- ### 总结 综上所述,为了使SpringBoot应用程序支持HTTPS并与Vue前端协同工作,主要涉及两个方面的工作:一是调整后台服务端口监听至TLS/SSL模式;二是确认前端资源加载均遵循相同原则即始终优先选用受信任CA签发的有效凭证链接形式访问远程Web API接口。此外还可以借助额外的技术手段比如AOP切面编程技术配合AES/RSA算法组合运用从而达到更深层次的数据防护目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值