CVE란 "정보 보안 취약점 표준 코드"를 말한다.

CVE는 마이터 코퍼레이션이라는 비영리단체에서 관리하는 문서이다. 미국 국가 취약점 데이터베이스(NVD)와 동기화되어 발견된 취약점들을 많은 전문가들에게 공유하여 컴퓨터 시스템을 안전하게 관리하도록 만들었다.

 

CVE 표기 형식 : CVE-년도-발생순번

MVN Repository에서 표기된 예시
CVE 페이지에서 해당 내용을 볼 수 있으며 추가적인 정보는 NVD에서 볼 수 있다.

자신이 사용할 프로그램 또는 사용하고 있는 프로그램이 CVE 코드가 부여되어있다면 코드 번호를 통해서 취약점을 파악해야 한다.

 

CVE 사이트 : CVE - CVE (mitre.org)

 

CVE - CVE

The mission of the CVE® Program is to identify, define, and catalog publicly disclosed cybersecurity vulnerabilities.

cve.mitre.org


참고사이트

CVE(Common Vulnerabilities and Exposures) (spo.go.kr)

CVE란? (redhat.com)

CVE 데이터베이스의 정의와 목적 | NordVPN

CVE(Common Vulnerabilities and Exposures) (leafcats.com)

[보안개념] CVE LIST 어떻게 활용되는 가? (tistory.com)

 

'정보게시판 > 사이트 공유' 카테고리의 다른 글

정규표현식 사이트, Regexr  (0) 2022.07.18
공부관련 사이트  (0) 2022.06.26

Java는 객체지향 프로그래밍 언어이지만,

 

실제 개발을 진행하다보면 절차지향적인 코드를 구현할 때가 많이 있습니다.

 

이러한 절차지향적인 코드는 코드의 진행순서를 읽기 쉽다는 장점이 있으나

 

로직의 재사용성이 떨어지고 유지보수를 어렵게 만듭니다.

 

그래서, 객체지향의 5대 개발원리(SOLID) 중 하나인 단일책임원칙(SRP, Single Responsibility)에 의하여

 

두 개 이상의 역할을 수행하는 코드들은 하나의 기능을 하도록 분리하는 것이 좋습니다.

 

이를 자바에서는 메서드 분리(Method Extract)라고 합니다.

 

메서드분리는 다음과 같은 장점을 가지고 있습니다.

 

맴버변수의 쓰임을 제한하여, 예상치 못한 변수 사용을 막을 수 있다.

 

변수를 위쪽에 몰아서 선언하는 경우,

 

메서드분리가 제대로 되어있지 않으면 코드를 읽는 사람이

 

중간에 변수가 바뀌는 것을 눈치채지 못할 수 있습니다.

 

이는 컴파일 시점에 드러나지 않으므로 오류의 원인이 되는 객체와 오류가 발생하는

 

물리적 지점의 거리가 멀어지는 원인이 됩니다.

각 기능간의 의존성이 낮아지기 때문에, 유지보수가 쉽고 편해진다

파일함의 업로드 기능을 예시로 들면, “업로드”와 “로그 남기기” 기능을

 

메서드분리한다면 로그 남기기 기능에 다소 변경사항이 있더라도

 

“업로드” 기능에는 영향을 주지 않으므로 기능을 더 쉽게 변경할 수 있습니다.

 

코드 맥락(Context)의 가독성이 높아진다

** 절차지향적 코드는 if문 중첩이 조금만 반복되어도 맥락을 매우 파악하기 어렵습니다.

 

2천줄을 읽은 후에, 갑자기 else문이 등장했다면 과연 2천줄 전의 조건을 기억할 수 있을까요?

 

메서드분리는 몇천줄의 코드를 한 줄의 메서드로 줄일 수 있기 때문에,

 

중첩 if문이라 하더라도 어떤 조건을 이용하는지를 빠르게 파악할 수 있습니다.

 

 

 

이렇게 코드를 리팩토링 하면서 메서드분리를 염두에 둔다면

 

예상치 못한 변수의 변경 및 쓰임을 예방하면서 유지보수와 가독성을 높일 수 있습니다.

 

Intellj의 리팩토링 기능, 자동 메서드분리

 

intellij에서는 이런 메서드 분리를 위해 자동 메서드분리 기능을 제공합니다.

 

먼저 메서드분리를 원하는 코드블록 ( {} 로 표현되는 하나의 스택 블록 ) 을 드래그하여 선택합니다.

 

Ctrl + Alt + M 을 누르면 자동으로 메서드분리가 진행됩니다.

 

분리된 메서드는 intellij가 원 메서드에 있는 매개변수를 추적해서 넣어주므로,

 

어떤 매개변수와 타입이 필요한지 선언부에 일일히 적을 필요가 없습니다.

 

선언부와 매개변수는 직접 수정할 수도 있으나,

 

엄격하게 하려면 intellij에서 제공하는 “More options” 를 사용하는 것도 좋습니다.

 

이렇게 접근제한자, 이름, 매개변수를 설정할 수 있습니다.

 

다만, ReturnType을 여러개로 인식할 수 있는 코드블록이라면 메서드분리 기능을 제공하지 않으니

 

반환값에 따라 다시 단일 메서드로 분리하면 됩니다.

 

유지보수와 가독성 향상을 위한 메서드분리를 위해서 Intellij의 자동 메서드분리 기능을 활용해보시기 바랍니다.

참고 자료

intellij IDEA 메서드분리 기능 official Document

 

 

Extract method | IntelliJ IDEA

 

www.jetbrains.com

 

IDE에서 GIT을 이용하다 보면 가끔 

 

파일 전체가 변경되었다고 표기되면서 변경점을 잡아내지 못하는 경우가 있습니다. 

 

혹은 PULL 받아온 파일에는 분명 변경된 점이 없는데, GIT에서 변경점을 잡아 오류처럼 보이기도 합니다. 

 

이는 CRLF설정 때문에 발생하는 현상입니다. 

 

 

CRLF 개행문자, 운영체제별로 각각 설정이 다르다 

 

CRLF는 띄어쓰기를 입력할 때 코드를 \r, 혹은 \n, 혹은 \r\n 어느 것으로 개행문자를 입력할 지를 구분짓는 설정입니다. 

 

운영체제별로 설정이 달라 Unix, Linux는 \n 

 

클래식 Mac Os ( 9버전 이하 ) 는 \r

 

Windows OS는 \r\n으로 표기합니다. 

 

이러한 차이점 때문에, OS와 상관없이 공통된 코드를 관리하는 시스템 ( IDE, GIT 등 ) 에서는 아무런 차이가 없는 파일처럼 보이더라도

 

띄어쓰기의 개행문자를 해석하는 과정에서 차이가 있는 것으로 인식할 수 있습니다. 

 

이러한 점을 고려하여서 여러 IDE에서는 CRLF 설정을 지원하고 있습니다. 

 

Intellij, 하단 사이드바 및 설정페이지에서 변경 가능하다.

 

 

인텔리제이는 공식 문서에서 친절하게 CRLF 설정과 바꾸는 법에 대해 설명해주고 있습니다. 

 

 

Configure line separators | IntelliJ IDEA

 

www.jetbrains.com

 

첫째로, 아래의 사이드바의 버튼을 통해서 바꾸는 방법이 있습니다.

 

아래 사이드바에서 간단하게 변경할 수 있다.

 

둘째로, 직접 설정페이지의 Code Style에서 바꾸는 방법이 있습니다. 

 

CodeStyle 항목의 Line Separator, 운영체제에 의존하도록 바꿀수도 있다.

 

Eclipse, WorkSpace 설정 및 EGit의 auto CRLF 설정이 있다.

 

이클립스 역시 WorkSpace에서 "New text file line delimiter를 통해서 os, 혹은 windows/ Unix로 바꿀 수 있습니다. 

 

다만 바꿀 시에 어떤 개행문자를 사용하는지 명확하게 나타나지는 않습니다. 

 

CR, LF, CRLF 어떤 개행문자를 사용하는지 명확하게 표기되지는 않는다.

 

Eclipse 내부에서 사용할 수 있는 e-git에서는 git에서 제공하는 auto CRLF 기능을 추가적으로 설정할 수 있는데, 

 

이는 "git config --global core.autocrlf true" 라고 하는 git의 기본 설정을 IDE 내부에서 설정으로 바꿀 수 있도록 

 

UI를 구현해주는 기능입니다. 

 

이를 true로 구현하면 window에서는 파일을 가져올 때  \r( LF ) 가 \n\r ( CRLF )로 바뀌게 되고 

 

PUSH할 때는  \n\r ( CRLF )가 \r( LF ) 로 변경됩니다. 

 

autocrlf 설정을 바꿀 수 있다.

 

이 설정은 초기에 True처리 되어있기 때문에, e-git을 사용할 때 만일 다른 사람이 CRLF로 개행한 코드를 가져오게 되면 

 

변경사항이 없음에도 파일 전체가 변경된 것으로 인식할 수 있으니 

 

파일에 변경사항이 없는데도 변경된 것 처럼 인식될 경우 관련설정을 false 처리 해보시기 바랍니다. 

 

 

 

VsCode, 하단 사이드바 및 설정페이지의 Eol 항목에서 변경가능하다. 

 

VsCode 역시 하단의 CRLF 항목으로 현재 적용되는 개행문자를 변경할 수 있습니다. 

 

Intellij와 같이 바로 보여준다.

 

더 자세히 변경하고 싶다면 설정에서 Eol을 입력하면 됩니다. 

 

auto로 os에 의존하도록 변경할 수 있다.

 

 

혹시 형상관리 툴을 사용할 때, 변경사항이 없는데도 문제가 발생한다면 

 

이처럼 IDE의 여러 개행문자 설정을 다시 한 번 점검해 보시길 바랍니다. 

 

 

 

Java 코드는 IDE에서 의존성을 나타내 주는 경우가 많지만 

 

Javascript 코드 혹은 Mapper에서 특정 함수나 테이블의 의존성을

 

"문자열 찾기" 없이 모두 검증하기는 어려울 것입니다. 

 

그래서 많은 분들이 개발, 혹은 결함처리 단계에서 한 파일단위,

 

혹은 전체 프로젝트 단위에서 검색기능을 활용하시는 것으로 알고 있습니다. 

 

이에 Eclipse나 Intellij 에서는 보다 정밀한 검색기능을 위해서

 

정규표현식(RegExp)으로 검색할 수 있는 기능을 제공하고 있습니다. 

Intellij 문자열 찾기 정규표현식 활성화
Eclipse 프로젝트 파일 찾기 정규표현식 활성화

 

이렇게 정규표현식을 잘 활용하여 원하는 결과를 찾는다면, 개발 시간의 획기적으로 단축될 수 있고 

 

IDE가 의존성 체크를 지원하지 않는 파일 형태라도 쉽게 의존성을 체크할 수 있습니다.

 

이런 정규표현식을 연습할 수 있는 사이트인 regexr.com을 소개합니다. 

 

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

 

이 사이트는 Expression, text, tools로  구성되어 있으며

 

별도의 인증정보 없이 손쉽게 웹에서 정규표현식을 연습하고 테스트할 수 있습니다. 

 

 

첫째로, 헷갈리기 쉬운 Expression Flag ( 대소문자, 전역, 라인단위, 유니코드 등을 의미 )  를

 

버튼형태로 자동완성하여 쉽게 실습할 수 있습니다. 

오른쪽의 Flag 버튼으로 자신의 expression에 Flag를 자동으로 추가한다.

 

 

둘째로, 정규표현식에 대한 Cheatsheet와 Document (Reference) 를 제공하여 기본 표현식을 쉽게 연습해 볼 수 있습니다. 

 

개별 정규표현식 단어, ^ 나 $, \b 등에 대한 사전이 정리되어 있다고 보시면 될 것 같습니다. 

 

Regex에 대한 간단한 설명 및 Document가 정리되어 있다.

 

셋째, 전방탐색과 후방탐색(lookaround)을 지원합니다.

 

일치영역을 발견하지만 값을 판단하지는 않는 전방탐색과 후방탐색을 이용하면

 

~앞에, ~뒤에 등의 단어를 쉽게 찾아볼 수 있습니다. 

 

전방탐색, 후방탐색에 대한 서치결과 및 어떤 방식으로 서치가 진행되는지를 보여주는 tools 창

 

마지막으로, 계정정보를 만들어 로그인하면 나만의 정규표현식을 저장하여 불러오기 할 수 있습니다. 

 

둘째로, 정규표현식에 대한 Cheatsheet와 Document (Reference) 를 제공하여 기본 표현식을 쉽게 연습해 볼 수 있습니다. 

 

 

개별 정규표현식 단어, ^ 나 $, \b 등에 대한 사전이 정리되어 있다고 보시면 될 것 같습니다. 

 

Community Pattern에는 RFC기반의 Email 정규표현식, 비밀번호 정규표현식, Ip 정규표현식 등 수많은 개발자들이 올려놓은 정규표현식 예시도 있으니 

 

 

이를 참고하시면 실력향상에 더욱 도움이 되실 수 있을 것이라 생각합니다. 

 

이렇게 Regexr을 사용하여 정규표현식을 연습해 보는 것을 추천드립니다. 

'정보게시판 > 사이트 공유' 카테고리의 다른 글

보안 취약점 정보 제공 사이트 CVE  (0) 2022.11.09
공부관련 사이트  (0) 2022.06.26

+ Recent posts