세션 고정 보호 전략
- 세션 고정 공격은 악의적인 공격자가 사이트에 접근하여 세션을 생성한 다음 다른 사용자가 같은 세션으로 로그인하도록 유도하는 위험을 의미
- 스프링 시큐리티는 사용자가 로그인할 때 새로운 세션을 생성하거나 세션 ID를 변경함으로써 이러한 공격에 자동으로 대응
세션 고정 공격
- 사용자가 공격자의 쿠키를 받은 채로 로그인을 하게 되면 공격자가 사용자의 모든 권한과 정보를 다 볼 수 있게 됨
sessionManagement() API 세션 고정 보호
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.sessionManagement(session -> session
.sessionFixation(sessionFixation -> sessionFixation.newSession())
);
return http.build();
}
세션 고정 보호 전략
- changeSessionId()
- 기존 세션을 유지하면서 세션 ID만 변경하여 인증 과정에서 세션 고정 공격을 방지하는 방식(기본값)
- newSession()
- 새로운 세션을 생성하고 기존 세션 데이터를 복사하지 않는 방식 → 완전히 새로운 세션을 만드는 것 → SPRING_SECURITY_ 로 시작하는 속성은 복사
- migrateSession()
- 새로운 세션을 생성하고 모든 기존 세션 속성을 새 세션으로 복사
- none()
- 기존 세션을 그대로 사용
→ 세션 고정 보호를 사용하지 않음 → 세션 고정 공격을 받게 되어 매우 위험
- 기존 세션을 그대로 사용
'Language > Spring Security' 카테고리의 다른 글
SessionManagementFilter / ConcurrentSessionFilter (0) | 2024.07.26 |
---|---|
세션 생성 정책 - sessionManagement().sessionCreationPolicy() (0) | 2024.07.26 |
동시 세션 제어 - sessionManagement().maximumSessions() (0) | 2024.07.26 |
SecurityContextRepository / SecurityContextHolderFilter (0) | 2024.07.25 |
사용자 상세 - UserDetails (0) | 2024.07.24 |