Spring-Security
세션 고정 보호
neal89
2025. 5. 29. 11:56
✅ 세션 고정 공격이란?
세션 고정 공격(Session Fixation)은 공격자가 사용자의 세션 ID를 미리 고정해두고, 사용자가 로그인할 때 같은 세션을 사용하도록 유도하여 권한을 탈취하는 공격입니다.
예시:
- 공격자가 고정된 세션 ID로 사용자를 사이트에 접속시킴.
- 사용자가 로그인 → 세션 ID가 유지됨 → 공격자는 세션 ID를 알고 있음 → 탈취 가능.
✅ Spring Security의 세션 고정 보호 기본값
http
.sessionManagement()
.sessionFixation().changeSessionId(); // 기본값
✅ 주요 전략 비교
전략 | 설명 | 장점 | 단점 |
changeSessionId() | 로그인 시 세션 ID만 변경 (기존 세션 속성 유지) | 빠르고 효율적, 사용자 경험 좋음 | 오래된 컨테이너에서는 미지원 가능성 |
newSession() | 로그인 시 새 세션 생성, 기존 속성은 복사됨 | 더 강력한 보안 | 속성 복사 비용, 동기화 문제 가능성 |
migrateSession() | 새 세션 생성 + 기존 속성도 함께 복사 | 중간 단계 (보안과 성능의 균형) | 일부 구현에서 예외 가능성 있음 |
none() | 아무 처리 안 함 | 세션 유지됨 (테스트용) | 보안 취약점 노출 (절대 실서비스에 사용 금지) |
✅ 예제 코드
http
.sessionManagement()
.sessionFixation().migrateSession(); // 전략 선택 가능