분류 전체보기(67)
-
브랜치 추상화에 대해 알아보자
브랜치 추상화란 어플리케이션의 큰 변화를 만들 때 주 흐름(Mainline)에 점진적으로 반영하는 패턴이다. 즉, 특정 라이브러리 혹은 오픈소스의 이름이 아니라, 작업 방식에 대한 방법론이다. 추상화된 브랜치 작업의 핵심은 예전에 하던 소스 추가 습관을 못하게 하는 훈련에 있다. 구체적인 방법은 다양한데, 가장 대표적인 방법은 특정 기술의 코드가 추가되면 빌드를 실패하게 하는 것이다. 일반적인 브렌치 추상화 작업 단계 변경이 필요한 시스템 부분에 추상 레이어를 생성한다. 시스템의 다른 부분을 이 추상 레이어를 쓰도록 리팩토링 한다. 새로운 클래스를 생성하고, 새로운 구현을 한다. 그리고 그 추상 레이어가 이전에 혹은 새로 생긴 클래스를 필요에 따라 위임하도록 한다. 이전 버전 구현 내용을 삭제한다. 앞의..
2023.02.03 -
Branch 대신에 FeatureFlag..?
Overview 이번 market api는 작업 특성상 프로세스 생명주기를 짧고 빠르게 잡아야 했다. 따라서, branch를 목적에 따라 다양하게 분리하고, 생명주기 역시 길게 잡는 Git-flow 보다는 그 반대의 성향을 가진 Trunk based development 방식이 더 효율이 좋을 듯 하다. Trunk based development 작업의 특징은 중심 브렌치(main || Trunk) 하나에 모든 작업을 때려넣는 것인데, 좀 더 자세히 알아보면, 무조건 브렌치 하나만 두는 것이 아니다. 필요하면, featuring 브렌치를 만들기도 한다. 다만, 'git-flow'와는 다르게 생성한 브렌치의 유지기간을 매우 짧게 갖는 것이다. 그런데 이번 프로젝트의 경우, 거의 나홀로 진행하기도 하고, M..
2023.02.01 -
놀랍고 놀라운 Spring Framework 6 근데, 과연 사용할 날이 올까?
이제 스프링 5에 익숙해질랑 말랑하려고 하는데, 갑자기 또 조만간 스프링 6을 출시한다고 한다. 공부해야 할게 아직도 산더미로 쌓여있는데 또 공부해야 할게 늘어나 심기가 편치 않다... 그래도 안 할 수는 없으니, 시간이 좀 있을 때, 요약해보고 개인적인 견해를 펼쳐볼까 한다. keynote: Introducing Spring Framework 6 요약 https://www.youtube.com/watch?app=desktop&v=mitWK_DwKGs&fbclid=IwAR3nagdKKWbEcwChuv11e3Tp0mXSzwBPh8TvA2QsiKiqDmFpvzsQKobXwgY&ab_channel=SpringDeveloper&mibextid=Zxz2cZ 명목상 Spring 6 소개 영상이지만, 사실은 6.1에..
2023.01.09 -
03. Spring security Features 요약 : Security Http Response Headers
웹 애플리케이션의 보안을 위해 사용할 수 있는 HTTP 응답 헤더는 다양하다. 스프링 시큐리티는 자체적으로 지원하는 여러 HTTP 응답 헤더를 지원한다. 필요하다면 스프링 시큐리티에 커스텀 헤더를 설정할 수도 있다. Default Security Headers 스프링 시큐리티는 기본적인 보안을 위한 HTTP 응답 헤더의 디폴트 셋을 제공한다. Default Security HTTP Response Headers Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires:0 X-Content-Type-Options: nosniff Strict-Transport-Security: max-age=31536000 ;..
2022.11.04 -
02. Spring security Features 요약 : Protection Against Exploits
스프링 시큐리티는 인증, 인가뿐만 아리나, 주요 취약점 공격을 보호해주는 기능을 제공한다. 대체로 기본으로 활성화되어있는데, 이 요약글에서는 해당 내용에 대한 부분을 다뤄보고자 한다. 1. CSRF(Cross Site Request Forgery) CSRF 공격이란? 다른 웹 사이트에서 인증하고 보관 중인 쿠키를, 악의적으로 조작된 웹 사이트의 폼 전송을 통해, 기존에 저장한 쿠키를 탈취하여, 개인 정보를 훔치고 악의적인 목적으로 활용하는 것을 말한다. 기본적으로 쿠키를 요청한 클라이언트의 브라우저에 저장하기에, 다른 컴퓨터로 조회하는 것은 불가능 하지만, 클라이언트를 속여서 가지고 있는 쿠키를 다른 사이트에 전송하는 방식을 통해 충분히 탈취당할 수 있다. 따라서, CSRF의 피해자는 또한, XSS 공격..
2022.11.04 -
01. Spring security Features 요약 : Password Storage
PasswordEncoder 인터페이스 단방향 변환 수행을 도와주는 인터페이스다. 이 인터페이스를 활용해서 사용자가 입력한 비밀번호를 인증 시점에서 비교할 수 있다. Password Storage History 1. 일반 텍스트로 암호 저장 이 방식은 SQL 인젝션 등의 악의적인 공격에 너무 취약한 방법이었고, 보안 전문가들로 하여금, 비밀번호를 보호하기 위해선 다른 무언가가 필요하다는 것을 깨닫게 해주었다. 2. SHA-256 SHA-256과 같은 단방향 해시를 적용하는 것이 관행이었던 시절이 있었다. 단방향 해시는, 초기에 설정한 비밀번호를 복호화 할 수 없는 무작위의 문자열의 조합으로 변형 시켜주는 암호화 기법이다. 따라서, 인증 시도시, 기존 해시 문자열과 사용자가 입력한 비밀번호의 해시 문자열을..
2022.11.04