繁体   English   中英

如何在 maven 构建期间删除/排除 Log4j?

[英]How to remove/exclude Log4j during maven build?

您好,由于 log4j 2.10 或更高版本中的漏洞问题,我们需要在我们的一个应用程序中删除上述 jar 文件。 我在我的 pom.xml 中试过这个,但遇到了一些错误。 我在构建 maven 项目方面没有太多经验:(

 <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>
    <name>assistant</name>
    <description>Assistant</description>
    
    <groupId>com.assistant</groupId>
    <artifactId>assistant</artifactId>
    <packaging>war</packaging>
    <version>2.0.2</version>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-solr</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>bootstrap</artifactId>
            <version>4.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>jquery</artifactId>
            <version>3.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>font-awesome</artifactId>
            <version>5.7.2</version>
        </dependency>
        <dependency>
            <groupId>javax.el</groupId>
            <artifactId>javax.el-api</artifactId>
            <version>3.0.0</version>
        </dependency>

        <!-- WORDPRESS DEPENDENCIES START-->
        <dependency>
            <groupId>org.kamranzafar.spring.wpapi</groupId>
            <artifactId>spring-wpapi-client</artifactId>
            <version>0.1</version>
        </dependency>
        <!-- WORDPRESS DEPENDENCIES END -->
        
         
    </dependencies>
    
    

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                 <configuration>
                    <excludes>
                        <exclude>
                            <groupId>log4j</groupId>
                            <artifactId>log4j</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
        
    </build>

</project>

这是标记中的错误

非常感谢您的帮助在此处输入图像描述

首先对 log4j 最近的漏洞进行一点概述。

  • Log4J 2.15.0 存在严重漏洞 CVE-2021-44228(远程代码执行)
  • Log4J 2.16.0 存在严重漏洞 CVE-2021-44228(远程代码执行)
  • Log4J 2.16.0 还存在漏洞 CVE-2021-45105(DoS 漏洞)
  • 编辑: log4j-api-2.17.0 上存在 CVE-2021-44832 漏洞,log4j-to-slf4j-2.17.0 上存在 CVE-2021-44832 漏洞。 但这两个漏洞并不严重。 还是建议升级到2.17.1

建议您升级到 2.17.0 或更高版本

此版本 (2.17.0) 包含两个远程代码执行漏洞的安全修复程序,即最新的 DoS 漏洞。

您正在使用 spring-boot 父级。 所以升级到 log4j 2.17.1 的一个好方法是通过 spring 引导依赖管理。 只需覆盖 pom.xml 属性部分中的 log4j 版本(无需在插件或依赖项部分执行任何操作):

 <properties>
        <java.version>1.8</java.version>
        <log4j2.version>2.17.1</log4j2.version>
 </properties>

https://snyk.io/blog/log4j-2-15-vulnerability-cve-2021-45046-critical-ace/


如果您真的只想排除 log4j 依赖项(因此,除非您将 log4j 替换为另一个日志记录框架,否则您可能不会丢失所有日志记录功能)

  1. 执行 maven 命令mvn dependencies:tree

  2. 这将显示 maven 依赖层次结构。 所以你只需要排除你不想要的依赖项。 举个例子:

     <dependencies>... <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <artifactId>log4j-to-slf4j</artifactId> <groupId>org.apache.logging.log4j</groupId> </exclusion> </exclusions> </dependency>... </dependencies>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM