修改/升级jar包中内嵌jar包的版本号

本文介绍如何解决FastJSON和Logback的安全漏洞问题。针对FastJSON,可以通过升级版本来修复;对于Logback,则需调整pom文件,移除并重新引入相关依赖。文章详细展示了具体的配置代码。

参考资料:

参考文章icon-default.png?t=M4ADhttps://blog.youkuaiyun.com/u011482647/article/details/122101243


实现原理:

  • 根据JVM加载规则,jar包中引用的第三方jar包,和直接从pom文件或者直接导入存储的路径是一样的,就比如下面的例子:
  • 我们引入了seata包,里面内嵌了阿里巴巴的fastJson包

  •  然后maven仓库的存储路径是:

  •  seata包中的程序,需要fastJSON就会到com.alibaba.fastJson目录下找本项目引用的版本

 

  •  但是由于fastJson1.2.83以下的版本有安全漏洞,所以我们需要将seata中的fastJson进行升级,我们只需要将这个低版本的去掉,然后引入一个高版本的即可

  •  这样并不会影响到seata以及整个项目的使用,因为他们都是在com.alibaba.fastjson文件夹下寻找的

总结:总而言之,即使是jar包引用的其他第三版jar包,也是独立的,可替换的,无论谁加载的路劲都是一样的。


实际问题:

  • 最近fastJson和LogBack相继爆出安全漏洞,老板也让我们抓紧修复,fastJson修复方法同上,logBack的修复方法,参考一位老哥的,见参考资料
  • 过程是:
  • (1)先将logback的上游jar包剃掉,通常是:spring-boot-starter-logging

  • 然后在重新引入即可,pom关键内容如下: 

 

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>spring-boot-starter-logging</artifactId>
                    <groupId>org.springframework.boot</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>log4j-api</artifactId>
                    <groupId>org.apache.logging.log4j</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>log4j-to-slf4j</artifactId>
                    <groupId>org.apache.logging.log4j</groupId>
                </exclusion>
                <exclusion>
                    <artifactId>logback-classic</artifactId>
                    <groupId>ch.qos.logback</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>${logback.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>logback-core</artifactId>
                    <groupId>ch.qos.logback</groupId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>${logback.version}</version>
        </dependency>
  • 另外提一句,IDEA的依赖树,内嵌的对于查找某个jar很好用,新窗口的查找太好用 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PH = 7

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值