4. 세션 설정

사용자가 로그인을 진행한 뒤 사용자 정보는 SecurityContextHolder에 의해서 서버 세션에 관리된다.

이때 세션에 관해 세션의 소멸 시간, 아이디당 세션 생성 개수를 설정하는 방법에 대해서 알아보자.

4-1. 세션 소멸시간 설정

4-2. 다중 로그인 설정

4-3. 세션 고정 보호

image-39342e82-86de-4896-965f-884aadf780da.png

해커가 ADMIN계정과 같은 세션 ID를 탈취해서 ADMIN계정을 대행해서 서버의 특정한 권한을 남용 할 수도 있기 때문에 이를 방지해줘야 한다. 먼저 해커가 Server에 접속을 하고 세션 쿠키를 획득해서 세션 쿠키 ID를 가지고 있다가 그 ID를 유저에게 부여한다. 그 후 다시 그 쿠키 ID에 대해서 세션을 받아와서 User가 가진 권한을 얻게 된다. 이 ID를 가지고 Server에 접속하게되면 권한을 남용하며 서비스에 치명적인 문제를 야기할 수 있다.

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) {
    http
        .sessionManagement((session) - session
            .sessionFixation((sessionFixation) -> sessionFixation
                .newSession()
            )
        );

    return http.build();
}
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception{

    http
            .sessionManagement((auth) -> auth
                    .sessionFixation().changeSessionId());

    return http.build();
}