Maven 프로젝트의 빈틈 수정

5900 단어 securityjava
Maven은 여전히 Java 생태계에서 가장 많이 사용되는 구축 시스템입니다.JVM report 2020에 따르면 Maven은 생태계에서 1위를 차지하는 구축 도구로 3분의 2의 점유율을 차지한다.
따라서 이제 Maven의 업무 방식을 이해하는 것이 중요하다.예를 들어 Snyk를 사용하는 Maven 프로젝트에서 빈틈이 발견되면 어떻게 복구합니까?본고에서 저는 Maven을 사용할 때 제3자 라이브러리의 빈틈을 어떻게 복구하는지 설명할 것입니다. 설령 이런 빈틈이 뚜렷하지 않더라도.

빈틈 찾기


만약 Maven을 사용하여 프로젝트를 구축하고 프로젝트의 의존 항목을 관리한다면, Snyk를 사용하여 프로젝트를 스캔할 수 있는 몇 가지 방법이 있습니다.이것은 실제 프로그래밍 언어와 상관없이 자바, Kotlin, Scala, Groovy 또는 자바 가상 머신(JVM)을 위한 다른 언어일 수 있습니다.
Snyk를 사용하여 Maven 프로젝트의 빈틈을 스캔하면
  • Snyk CLI
  • Snyk Github Actions for Maven
  • Snyk Maven Plugin
  • 또는 Eclipse용 Snyk IDE 플러그인
  • IntelliJ IDEA
  • CLI의 경우 Snyk가 최상위 종속성을 업데이트하여 빈틈을 해결하는 방법을 보여 줍니다.그러나 최상위 의존 항목이 개선된 버전이 없으면 Snyk는 복구 빈틈이 있는 최신 버전의 하위 의존 항목이 있는지 보여 줍니다.
    connecting your repository to Snyk

    최고급 구멍 복구


    Snyk에서 발견된 빈틈을 복구하는 가장 간단한 방법은 최상위 수준의 라이브러리를 변경하는 것입니다(가능한 경우).만약 라이브러리에 밑바닥 의존항이 없다면, 이 특정한 문제가 없는 최신 버전으로 업그레이드해야 합니다.하부 의존항에 문제가 있지만 최신 버전의 최고급 의존항에 문제가 없을 때도 적용된다.
    버전을 전환할 수 있는 몇 가지 방법이 있습니다.우선 지정한 버전의 위치를 찾아라.최상위 종속성의 경우 대부분의 경우 다음 중 하나를 찾을 수 있습니다.
  • 아버지pom
  • 에서
  • 부동산
  • 직접 의존 수준
  • 아버지


    업그레이드가 필요한 의존항이 부모pom에 정의되어 있다면, 우선 부모pom의 최신 버전을 찾으십시오.Spring Boot의 경우 상위 버전의 상위 버전이 이미 있는 경우 문제가 해결되었는지 먼저 최신 버전으로 업그레이드하는 것을 고려하십시오.이런 방식을 통해 전체 의존 항목 집합을 업데이트할 수 있습니다. 대부분의 경우 하나의 의존 항목만 업그레이드하는 것보다 좋습니다.모 피쳐를 전환하거나 변경할 수 없으면 직접 방법으로 건너뜁니다.
    <parent>
       <groupId>io.snyk</groupId>
       <artifactId>demo-parent</artifactId>
       <version>1.0.4.RELEASE</version>
    </parent>
    

    속성


    속성을 사용한 경우 먼저 이 속성을 업데이트합니다.다른 의존항을 업데이트할 수도 있지만, 아버지pom처럼 충분한 이유가 있다.만약 라이브러리가 하나의 집합으로 발표된다면, 같은 버전을 가지고 있다면, 라이브러리는 더욱 잘 협동하여 작업할 수 있다는 것을 알고 있습니다.
    <properties>
        <commons-lang3.version>3.9</commons-lang3.version>
    </properties>
    

    직접적


    마지막으로, 당신의 의존 관계는mavenpom 파일의 의존 관계 부분에서 설명합니다.여기에서 그룹Id,artifactId를 지정할 수 있으며, 많은 경우에 버전을 지정할 수 있습니다.만약 여기에 버전을 성명했다면, 그것을 업데이트하기만 하면 된다.없으면 추가할 수 있습니다.
    이것은 의존항 버전을 선언하는 최저 단계입니다. 다른 설정 버전을 덮어쓰는 방법입니다.
    <dependency>
      <groupId>org.eclipse.collections</groupId>
      <artifactId>eclipse-collections</artifactId>
      <version>10.4.0</version>
    </dependency>
    

    기본 종속성 수정


    최상위 의존 항목이 아직 버전이 업데이트되지 않았지만, 하위 의존 항목 중 하나는 복구해야 할 문제가 있습니다.CLI에서 이 기본 종속성에 문제를 해결하는 데 사용할 업데이트 버전이 있음을 알려 주었습니다.

    BOM


    많은 프레임워크에서 BOM을 사용하여 베이스 종속 관계를 관리합니다.BOM은 프로젝트 종속 항목의 버전을 제어하고 이 버전의 중심 위치를 정의하고 업데이트하는 특수한 POM입니다.
    하부 의존 항목이 Spring Boot 같은 프레임에서 교체되어야 할 때 이 의존 항목이 BOM의 일부인지 확인하십시오.이 경우 특정 BOM 테이블에 업데이트된 버전이 있는지 확인하고 업데이트합니다.BOM 버전은 Spring Boot 및 기타 여러 알려진 프레임워크에서 속성으로 지정됩니다.속성을 추가하여 Maven POM 파일의 속성을 덮어쓸 수 있습니다.
    다음 예제에서는 Spring Boot 프로젝트에서 Jackson의 BOM을 덮어씁니다.
    <properties>
        <jackson.version>2.10.2.20200130</jackson.version>
    </properties>
    

    의존 관계 관리


    Maven POM에서 최상위 종속성을 선언할 때 특정 하위 종속성을 배제하고 포함할 수 있습니다.그러나 두 라이브러리가 같은 밑바닥 의존 관계를 공유할 때 문제가 발생할 수 있다.Maven의 가장 좋은 실천은 이러한 성명을 의존 관계 관리 부분에 묶는 것이다.이 절에서는 프로젝트 작성자가 전송 가능한 의존에서 공작물을 만났을 때 사용할 공작물 버전을 직접 지정할 수 있습니다.다음 예제를 제외하고 dependency Management를 어떻게 사용해야 하는지 명확하게 설명합니다.
    <dependencyManagement>
       <dependencies>
           <dependency>
               <groupId>org.yaml</groupId>
               <artifactId>snakeyaml</artifactId>
               <version>1.26</version>
           </dependency>
       </dependencies>
    </dependencyManagement>
    

    문서 결론


    보시다시피 마븐 기반 프로젝트의 소스 의존 항목의 안전 문제를 완화시킬 수 있는 몇 가지 방법이 있습니다.최고급 의존 항목을 업데이트하여 직접 복구할 수 없더라도 밑바닥의 전달 의존 항목을 필터하고 비교적 새로운 사용 가능한 버전으로 전환할 수 있습니다.Snyk 소스 스캔은 업그레이드가 필요한 버전 정보를 제공합니다.본고는 Maven 프로젝트에서 그것을 정확하게 설정하는 방법을 보여 줍니다.

    좋은 웹페이지 즐겨찾기