🛹 목표
목표 | 난이도 | 달성 여부 |
이펙티브 자바 ITEM 12, 13, 14 - toString을 항상 재정의하라 - clone 재정의는 주의해서 진행하라 - Comparable을 구현할지 고려하라 |
😘 | ✔️ |
패스트 캠퍼스 강의 듣기 |
😘 | ✔️ |
📋 공부 내용 & 기록
1. 스프링시큐리티 Session 관리
세션 : 일정 시간(클라이언트가 웹브라우저를 통해 웹 서버에 접속한 시점부터 종료할 때까지) 동안 동일한 클라이언트로부터 들어오는 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 기술. 클라이언트가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 세션이라 칭한다.[참고]
쿠키 : 클라이언트의 정보를 컴퓨터 메모리에 저장
세션 : 클라이언트의 요청에 따른 정보를 컴퓨터 메모리가 아닌 웹 서버에서 저장되고 호출
세션 관리
protected void configure(HttpSecurity http) throws Exception {
http.sessionManagement()
.maximumSessions(1) // 최대로 허용 가능한 세션의 수
.maxSessionsPreventsLogin(true) // 생성 가능한 세션의 수를 넘었을 때 처리방법. true -> 현재 사용자 인증 실패, false -> 기본값, 기존 세션 만료
.invalidSessionUrl("/invalid") // 세션이 유효하지 않을 때 이동할 페이지
.expiredUrl("/expired "); // 세션이 만료되었을 때 이동할 페이지
}
세션 정책 설정
protected void configure(HttpSecurity http) throws Exception {
http.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
}
- ALWAYS - 세션이 존재하지 않는다면 항상 세션이 생성됨
- IF_REQUIRED - 세션이 요구되면 세션이 만들어진다.(Default)
- NEVER - 스프링 시큐리티가 스스로 세션을 만들지는 않지만, 이미 존재한다면 그 세션을 사용한다.
- STATELESS - 스프링 시큐리티가 세션을 생성하지도, 사용하지도 않는다. (JWT에서 사용)
[Spring Security] 세션(Session) 관리
이번 Post에서는 세션에 관해 설정하는 방법에 대하여 알아보고자 합니다.
velog.io
SessionCreationPolicy.ALWAYS 일 때 발생할 수 있는 부작용
- 세션 과부하 : 세션 관리에 대한 부하가 증가할 수 있음, 세션은 메모리나 데이터베이스 등의 자원을 사용하므로, 세션 수가 많을 경우 시스템 자원 부족이나 성능 저하의 원인이 될 수 있다.
- 보안 취약 : 세션 고정 공격(Session Fixation Attack)과 같은 보안 취약점이 발생할 수 있음. 세션 고정 공격은 공격자가 미리 생성한 세션을 클라이언트에게 강제로 부여하여, 공격자가 해당 세션으로 인증을 우회하는 공격. 따라서 세션을 생성할 때마다 새로운 세션 ID를 부여하거나, 기존 세션을 무효화 하는 등의 대책이 필요.
- 세션 관리의 복잡성 증가 : 세션의 생성, 유지, 종료 등의 생명주기를 관리하는 복잡성이 증가.세션 관리는 세션 타임아웃 설정, 세션 클러스터링, 세션 저장소 설정 등 다양한 요소들이 포함되며, SessionCreationPolicy.ALWAYS 옵션을 사용할 경우 이러한 세션 관리에 대한 추가적인 설정과 관리가 필요할 수 있음.
'TIL' 카테고리의 다른 글
[TIL] 🌱 2023.04.24 - 멀티 모듈 (0) | 2023.04.24 |
---|---|
[TIL] 🌱 2023.04.19 - ControllerAdvice, Actuator (0) | 2023.04.19 |
[TIL] 🌱 2023.04.01 - Projection (0) | 2023.04.01 |
[TIL] 🌱 2023.03.31 - Mock? MockBean? (0) | 2023.03.31 |
[TIL] 🌱 2023.03.27 - Rest Client Test (0) | 2023.03.27 |