Springboot配置文件中的明文密码漏洞

目录

一、背景        

二、本地修复测试

1、maven中引入jasypt 

2、编写加密解密工具类

3、修改配置文件,增加秘钥

4、秘钥放在启动项

 三、生产实现

1、升级打包代码

2、生产yml修改明文密码处

3、修改启动命令


一、背景        

        最近接收到网安的系统安全漏洞通知,其中有一个Springboot项目存在配置文件中采用明文存储密码漏洞,如下代码,会导致所有能够访问该文件的人都能访问该密码,将会降低系统安全性。即使不能阻止应用程序被那些可以访问配置文件的攻击者入侵,也可以通过加密密码提升攻击者入侵难度,故配置文件中的密码应进行加密存储。于是需要修复。建议配置文件中采用jasypt加密的密码存储密码。于是就按照建议做下修复方案。

spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: oracle.jdbc.OracleDriverusername: objBatpassword: rootUdasd_110$$url: jdbc:oracle:thin:@//10.10.55.1110:1521/objPro

二、本地修复测试

1、maven中引入jasypt 

pom文件中加入以下配置即可,版本根据情况而定

<!--jasypt配置加密--><dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>2.1.2</version></dependency>

2、编写加密解密工具类

既然要加密解密,那至少得有个测试工具才能知道加密,解密之后密码是否产生变化, 心里才有底。

package com.project.util;import org.jasypt.encryption.StringEncryptor;
import org.jasypt.util.text.BasicTextEncryptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;/*** Created by HJ on 2023/5/26 */
public class EscUtil {@Autowiredprivate StringEncryptor stringEncryptor;public String encry(String str){String encData = stringEncryptor.encrypt(str);String decData = stringEncryptor.decrypt(encData);System.out.println("加密数据:"+encData);System.out.println("解密数据: " +decData);return encData;}public static void main(String[] args) {//创建加密对象,默认PBEWhisMD5AndDESBasicTextEncryptor encryptor = new BasicTextEncryptor();//加密秘钥encryptor.setPassword("BD9FA15C-7976-47DA-B8D5-E2438115F937");//将明文进行加密String encData = encryptor.encrypt("rootUdasd_110$$");//密文解密String decData = encryptor.decrypt(encData);System.out.println("数据加密后:"+encData);System.out.println("数据解密后: "+decData);String encDatar = encryptor.encrypt("redisUhsgf_52#");//密文解密String decDatar = encryptor.decrypt(encDatar);System.out.println("r加密后:"+encDatar);System.out.println("r解密后: "+decDatar);}}

其中 encryptor.setPassword后边接的是秘钥,这就使用UUID作为秘钥加密,也就是下文的BD9FA15C-7976-47DA-B8D5-E2438115F937 然后将明文密码放进去进行加密,再输出解密后的密码,看是否一致,那如下结果,看起来是一致的

这个时候我们再运行一次,发现加密后的代码跟之前的不一样了,那有人可能担心了,那密码到底是按照哪个呢?答案就是,jasypt加密每次加密产生的密文都不一样,然后不一样的密文解密产生的结果是一样的,也就是说,随便写一个生成的密文都可以。

 

3、修改配置文件,增加秘钥

在配置文件中增加秘钥配置 ,项目中使用的yml配置,那就这样加了,如果是properties配置,对应转化下就行

#jasypt加密秘钥
jasypt:encryptor:password: abcdef

修改明文密码的地方,将加密后的密文使用ENC加括号括起来即可

spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: oracle.jdbc.OracleDriverusername: objBatpassword: ENC(2C4G7sdQSEwHUEnZMxQOVNHkZxTQ4DoT)url: jdbc:oracle:thin:@//10.10.55.1110:1521/objPro

启动项目,可以正常连接,表示没问题

4、秘钥放在启动项

由于秘钥是放在yml配置文件中,其实就相当于告诉你,我加密了,加密的秘钥也在这里,颇有点掩耳盗铃的风范,于是为了安全起见,最好把秘钥放在启动项或者配置项里。启动项VM加上以下配置,

-Djasypt.encryptor.password=BD9FA15C-7976-47DA-B8D5-E2438115F937

 然后yml中删除jasypt加密秘钥,也就是这些

 三、生产实现

1、升级打包代码

2、生产yml修改明文密码处

spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: oracle.jdbc.OracleDriverusername: objBatpassword: ENC(2C4G7sdQSEwHUEnZMxQOVNHkZxTQ4DoT)url: jdbc:oracle:thin:@//10.10.55.1110:1521/objPro

3、修改启动命令

在启动命令之后增加秘钥配置

--jasypt.encryptor.password=BD9FA15C-7976-47DA-B8D5-E2438115F937


java -jar  SpringbootPro.jar --jasypt.encryptor.password=BD9FA15C-7976-47DA-B8D5-E2438115F937

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/353525.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

高德地图添加遮罩,实现圈出某个特定的地区

实现效果 一、准备 1、注册账号并申请Key 2、准备页面 <script type"text/javascript" src"https://webapi.amap.com/maps?v1.4.15&key您申请的key值"></script> <div id"container"></div>#container {widt…

vue 高德地图贴地点

效果图 引入高德api maps和local local 用的2.0.0的 其他版本可能会有不兼容问题 mounted(){//设置 地图this.map new AMap.Map(container, {mapStyle: , // 设置地图的自定义样式-深色zoom: 7.3, //级别center: [119.1, 36.32], //中心点坐标viewMode: 3D, // 地图模式resiz…

iOS 跳转到地图后导航(高德地图,百度地图,腾讯地图,苹果手机原生的地图)

1.现在info.plist里面如下图所示添加 2.在下图输入框中输入地名&#xff0c;然后点击前往目的地会出现如下图所示。&#xff08;如果你不知道地方名如何转化为经纬度请看我的另一篇博客&#xff1a;http://blog.csdn.net/chenyongkai1/article/details/51891135&#xff09; 3.…

高德导航免费,那他靠什么收入?

来源 &#xff5c;一口Linux 一位工作了12年的软件工程师说&#xff1a;当你打开导航时&#xff0c;不需要任何费用&#xff0c;还会给高德公司带来丰厚的收入。当时我不信&#xff0c;去查了相关资料后&#xff0c;才知道这个行业不简单。 出门外出&#xff0c;对路线不熟时&a…

C++编译一些常见的错误集锦

1、段错误&#xff08;Segmentation Fault&#xff09; &#xff08;1&#xff09;段错误&#xff08;Segmentation Fault&#xff09;是一种常见的计算机程序错误&#xff0c;通常指向程序试图访问的内存地址超出了程序可访问的内存范围&#xff0c;或者指针指向了无效的内存…

分布式光伏发电远程监控系统

分布式光伏发电远程监控系统 项目背景 新能源、可再生能源接入电网是智能电网建设的重要组成&#xff0c;也是能源互联网发展的基础。近年来&#xff0c;太阳能光伏发电技术快速发展&#xff0c;光伏发电并网对配电网的影响也不断加深。电网调度人员需要人工参与光伏发电站的发…

短视频矩阵源码技术开发

短视频矩阵是一种常见的视频编码标准&#xff0c;它通过将视频分成多个小块并对每个小块进行压缩来实现高效的视频传输。在本文中&#xff0c;我们将介绍短视频矩阵的原理和实现&#xff0c;并提供示例代码。 $where_time array(); // 时间 $where_time[] array(name>fbr…

运用正则表达式匹配QQ邮箱

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1.首先创建一个新文件夹 1.命名好名字后用Visual Studio Code打开 创建一个HTML文档用&#xff01;字符按下tab键后完成基本格式 创建一个input标签占位符写下请输入QQ邮箱再给他一个id方便调用 …

html5form表单提交到QQ邮箱,javaMai+Springl实现给QQ邮箱发邮件(带附件,html格式)...

以前的时候想着java发邮件很简单,因为当时使用的是outlook实现的,有兴趣的可以去看看之前的两篇博客文章,1.使用java底层实现邮件的发送(含测试,源码) 和 2.使用Spring实现邮件的发送(含测试,注释,源码) 就在今天,遇到的需求是给一个QQ邮箱发一份邮件,刚看到需求一看…

Linux向qq邮箱发送html表格以及遇到的问题

由于是实验&#xff0c;做的比较简陋&#xff0c;邮箱直接显示html界面&#xff0c;有诸多要求&#xff0c;本人对html不太擅长&#xff0c;详情可以参考http://www.ruanyifeng.com/blog/2013/06/html_email.html linux向qq发送邮件参考另一篇博客&#xff1a; https://blog.cs…

PGP加密解密QQ邮箱邮件

今天学习了PGP加密解密QQ邮箱邮件的方法&#xff0c;分享一下&#x1f601;&#x1f601;&#x1f601;&#x1f601; 涉及软件&#xff1a;PGP(PGP Desktop)、Outlook(office的) 加密&#xff1a; 第一步&#xff1a;安装PGP软件&#x1f602;&#x1f602;&#x1f602; 具体…

qq邮箱发html版式是乱的,为什么在Word里编辑的内容到QQ邮箱里发给别人是乱的,我用附件发的呀...

为什么在Word里编辑的内容到QQ邮箱里发给别人是乱的,我用附件发的呀以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 为什么在Word里编辑的内容到QQ邮箱里发给别人是乱的,我用附件发的呀, 为什么在Word里编辑好的…

ipad查看qq邮箱收件服务器,ipad怎么设置qq邮箱以便通过iPad来接收QQ邮箱收到的邮件...

大家可以通过下文来了解&#xff0c;小编将会演示ipad怎么设置qq邮箱&#xff0c;设置成功之后我们就能通过iPad来接收QQ邮箱收到的邮件&#xff0c;快来操作吧~ 下文是以iPhone设置QQ邮箱为例&#xff0c;和iPad步骤是一样的哦&#xff0c;首先进入“Mail”&#xff0c;点击“…

SpringCloud Gateway网关多路由配置访问404解决方案

文章目录 一、问题描述&#xff1a;SpringCloud GateWay Eureka访问出现404&#xff0c;Not Found二、解决方案:1、 配置 filters: - StripPrefix12、删除冲突依赖3、检查启动类4、检查配置文件 一、问题描述&#xff1a;SpringCloud GateWay Eureka访问出现404&#xff0c…

这才叫软件测试工程师,你那最多是混口饭吃罢了....

前些天和大学室友小聚了一下&#xff0c;喝酒喝大发了&#xff0c;谈天谈地谈人生理想&#xff0c;也谈到了我们各自的发展&#xff0c;感触颇多。曾经找工作我迷茫过、徘徊不&#xff0c;毕业那会我屡屡面试失败&#xff0c;处处碰壁&#xff1b;工作两年后我一度想要升职加薪…

QQ截图快捷键设置

1、打开qq找到主菜单找到设置 2、找到热键----------点击设置热键 3、双击捕捉屏幕进行设置快捷键 然后就OK了。

C#高仿腾讯QQ截图程序

最近把以前制作的截图程序重新写了一下 动了一个大手术 高质量仿照的TX的截图程序 源码下载1(2012-12-09) http://download.csdn.net/detail/crystal_lz/4863320 源码下载2(2012-12-15) http://download.csdn.net/download/crystal_lz/4889763 新改版见&#xff1a;http:/…

【2022-10-19】让Mac QQ自带截图软件单独运行 / 节省大量系统内存 / 快捷截图 / ScreenCapture QQ/ QQ jietu plugin

相信用过Window QQ自带的截图工具的朋友&#xff0c;都会说一句&#xff1a;”真TM好用&#xff01;“&#xff0c;同样Mac QQ也自带了这样一款截图工具&#xff0c;但肯定没Window下这么好用&#xff0c;但是在Mac上应该也是数一数二的&#xff0c;我看了下界面&#xff0c;跟…

QQ截图工具截取

邮箱截图插件 TXGYMailCamera.dll(X86) Export: CameraWindow CameraSubArea CameraWindowLikeSpy 调用参数&#xff1a; rundll32 TXGYMailCamera.dll CameraWindow 微信截图插件 PrScrn.dll(X86) Export: PrScrn 调用参数&#xff1a; rundll32 PrScrn.dll PrScrn 下载地址&…

QQ自带截图功能(你想不到的强大, 必看,长截图/翻译/文本识别/钉在桌面/录屏)

本文是众多使用技巧中其中的一篇, 全部使用技巧点击链接查看, 保证你收获满满 我主页中的思维导图中内容大多从我的笔记中整理而来,相应技巧可在笔记中查找原题, 有兴趣的可以去 我的主页 了解更多计算机学科的精品思维导图整理 本文可以转载&#xff0c;但请注明来处&#x…