[git] Git rebase --onto로 잘못 섞인 브랜치 히스토리 정리하기
·
정리용/git
들어가며기능별로 브랜치를 나누어 작업하다 보면, 의도하지 않은 브랜치의 커밋이 다음 브랜치의 기반에 포함되는 경우가 있습니다.문제 상황은 로컬 develop에 feat/erd 커밋이 병합된 상태에서 feat/common-response-exception 브랜치를 생성하면서 시작되었습니다.origin/develop └─ feat/erd 커밋 └─ 로컬 develop 병합 커밋 └─ feat/common-response-exception그 결과 공통 응답 기능 브랜치의 로그와 Pull Request에 ERD 커밋이 함께 나타나게 되었습니다.이 글에서는 프로젝트를 새로 만들지 않고 다음 작업을 수행한 과정을 정리해 보려고 합니다.잘못된 브랜치 분기 구조 파악하기작업 브랜치 안전..
[Web] HTTP 요청–응답과 상태코드
·
Web & Infra/Web
0. 개요HTTP:화면을 가져오는 것에서 시작 -> 현재는 대부분 API를 주고 받는 인터페이스즉, 요청(Request)과 응답(Response) 의 규약.HTTP(네트워크 디버깅)을 본다는 것은 결국 상태코드 + 헤더 + 바디를 읽는 일 아래의 과정을 통해 Request -> Response의 과정이 이뤄짐Client (Browser/App) └─ 1. DNS → TCP/TLS → HTTP Request └─ 2. (CDN/Proxy/Load Balancer) └─ 3. Web Server / App Server └─ 4. (DB/Cache/Other APIs) └─ 5. HTTP Response (statu..
[인용/정리] MSA에서의 인증 / 인가(넷플, 토스)
·
카테고리 없음
보호되어 있는 글입니다.
[JAVA] 상속 / 구현 / 다형성
·
정리용/java
0. 개요- 개발하다가 다시 자바에 대한 정리를 할 필요성을 느껴서 정리할 겸 글을 갱신한다.- 자바에서 상속 -> 추상 클래스 -> 인터페이스 등으로 나아가면서 궁금했던 내용들과 개념들에 대해 적어본다.1. 개념1.1 객체 지향:: 어떤 데이터와 그 데이터를 처리하는 메서드를 포함하는 객체를 사용한 프로그래밍으로 아래의 특징을 가진다.캡슐화 :: 필요한 것만 노출하여 정보 은닉을 위해상속 :: 공통된 부분 재사용, 기존의 클래스를 확장하기 위해다형성 :: 상속 구조에서 확장 가능한 코드를 작성하기 위해추상화 :: 추상화는 추상화...1.2 상속- 부모 클래스에 공통된 부분을 묶어 코드의 재사용성을 높임- 계층 구조 형성 + 오버라이딩 가능- 자식 클래스 생성 시, 부모 클래스도 생성- 상위 클래스의 하..
[Security] 3-1. 적용기 (눈물의 00쇼)
·
정리용/Spring Security
1. 기본 흐름1.1 기본 로직JSON형식의 POST 요청을 받아서 로그인 로직을 진행할 것이므로,SpringSecurity 내의 LoginFrom이 아닌 다른 흐름을 가져야 한다.2. 커스텀한 흐름2.1 기본 로직하지만 Custom해서 작성한 경우에는 SecurityFilterChain에서 - UsernamePasswordAuthenticationFilter를 상속 받아서 인증 토큰을 반환하는- CustomUsernamePasswordAuthenticationFilter를 만들어서 - addFilterAt를 통해 필터링의 방향성을 틀어주어야 한다. 이때, 중요한 점은 기본 설정된 AuthenticationManager를 사용한다면 - 우리가 설정한 CustomUserDetailsService가 아닌 U..
[Security] 3-0. 적용기 (눈물의 00쇼)
·
정리용/Spring Security
0. 기본 설정0.1 기본 설정 값- 이것저것 붙여보기에 앞서서 기본 설정에 대해서 말해볼까 한다.- 기본적으로 최신의 기능들을 사용하면서 적용할거라 springboot는 3.5.0에 java는 21을 사용했다.- application.properties는 아래와 같이 설정했고더보기// src/main/resources/application.propertiesspring.application.name=SecurityExserver.port=8080# SQL 연결 설정spring.datasource.url=${SPRING_DATASOURCE_URL}spring.datasource.username=${SPRING_DATASOURCE_USERNAME}spring.datasource.password=${SPRI..
[Security] 2-4. 인증 방식 비교 및 확장
·
정리용/Spring Security
1. HTTP Basic 인증http.httpBasic(Customizer.withDefaults());클라이언트에서 Header를 통해 Authorization: Basic base64(id:pw) 형태로 요청BasicAuthenticationFilter 필터가 SecurityFilterChain에 추가되어 (Basic Authentication 활성화)Basic Authentication 인증 방식- Authorization 헤더에 username:password ID/PW 인증 정보를 Base64 인코딩 후 전송- Authorization 헤더 형태 :: Authorization: Basic {base64(usename:password)}1.1 처리 흐름1. BasicAuthenticationFil..
[Security] 2-3. WebSecurityCustomizer
·
정리용/Spring Security
1. WebSecurityCustomizer:: Spring Security 내 모든 보안 설정에 대한 예외 설정:: Spring Security는 정적 리소스나 헬스체크 같은 요청은 필터 체인을 아예 사용 X 가능1.1 WebSecurityCustomizer 설정 비교1. 필터 사용 X@Beanpublic WebSecurityCustomizer webSecurityCustomizer() { return (web) -> web.ignoring() .requestMatchers("/health", "/health/**", "/publics/**");}web.ignoring(): 필터 자체를 타지 않음 (SecurityFilterChain 적용하지 않을 예외 URL 규칙 설정)authori..
[Security] 2-2. SecurityFilterChain 옵션(sessionManagement ...)
·
정리용/Spring Security
1. sessionManagement():: 인증 완료 시, 세션관리에 대한 내용 :: 세션 수 제한 및 세션 고정 공격 방어http.sessionManagement(session -> session .sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED) // “Spring Security 로직에서” HttpSession 생성하여 사용할지 여부 .sessionFixation(sessionFixation -> sessionFixation.changeSessionId()) // Session Fixation 세션 고정 공격 방어를 위한 ID 변경 // .sessionCreationPolicy(SessionCreationPolicy.STATEL..
[Security] 2-1. SecurityFilterChain 옵션(CSRF, CORS)
·
정리용/Spring Security
1. csrf()1.1 정의CSRF(Cross-Site Request Forgery) :: 인증된 사용자의 권한을 악용한 요청 위조 공격 :: 악의적인 웹사이트가 사용자를 속여, 사용자가 로그인한 상태에서 웹사이트에 의도하지 않은 요청을 보내는 공격:: CSRF 방지를 위한 CSRF Token 통한 방어책 제공( POST, PUT, DELETE 등 상태 변경 요청에 대해 CSRF 토큰이 필요) // CORS가 방지하지 못하는 FORM 및 IMG 태그를 통한 CSRF 공격의 예// CSRF에 대해 CORS로 일부는 방지할 수 있지만 네이티브 앱과 FORM 통한 공격은 토큰으로만 방어가능// 1) 이미지 태그를 이용한 GET 방식 CSRF 예시// 2) 폼 자동 제출을 이용한 POST 방식 CSRF 예시 ..