ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 세션 정책 및 고정세션 공격방지
    SPRING/스프링 시큐리티 2021. 8. 3. 10:51

    스프링 시큐리티에서는 세션 관련 정책을 설정할 수 있다.

    하나의 계정에 최대 몇개의 세션을 유지할 것인지, 새로운 사용자가 접근하면 로그인을 금지할 것인지 아니면 기존 사용자를 로그아웃 시킬 것인 지 등 정책 설정이 필요하다.

     

    @Configuration
    @EnableWebSecurity
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
    
        @Autowired
        UserDetailsService userDetailsService;
    
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            // 모든 리소스에 대한 인증완료시 접근 허용
            http
                    .authorizeRequests()
                    .anyRequest().authenticated();
            // form Login  사용
            http
                    .formLogin();
            // 세션 정책 (최대 세션 개수 1개로 설정 및 해당 횟수 넘으면 로그인 X)
            http
                    .sessionManagement()
                    .maximumSessions(1) // 최대 세션 개수 1
                    .maxSessionsPreventsLogin(true); // 최대 세션 개수를 초과할 시에 로그인 방지
        }
    
    }

    위 설정에서 동일 계정으로 2번 로그인 시 아래와 같은 화면이 나온다.

     

    .maxSessionsPreventsLogin(false); 로 설정시에는 기존 사용자가 세션아웃이 된다.

     

    고정세션공격 보호하기

     

    공격자가 JESSIONID를 가로채서 Session을 공유하여 공격

    -> 사용자에게 접속할때마다 JESSIONID를 발급해서 막음.

     

    아무 설정을 하지 않으면 default 값인 changeSessionId로 설정

    1. changeSessionId()

    - 새로운 세션ID가 발급됨.

    - 이전 세션 사용이 가능함.

           http
                    .sessionManagement()
                    .sessionFixation()
                    .changeSessionId()
                    .maximumSessions(1);

    2. newSession()

    - 새로운 세션ID가 발급됨.

    - 이전 세션 사용이 불가능함.

            http
                    .sessionManagement()
                    .sessionFixation()
                    .newSession();

    3. none()

    - 아무설정을 하지 않음. (고정세션 공격이 됨)

    http
                    .sessionManagement()
                    .sessionFixation().none();

    'SPRING > 스프링 시큐리티' 카테고리의 다른 글

    remember-me  (0) 2021.08.01
    로그아웃  (0) 2021.08.01
    FORM 인증 - 기본  (0) 2021.08.01
    Security Configuration 클래스 기본 설정  (0) 2021.08.01
    의존성 추가 및 기본 세팅  (0) 2021.08.01
Designed by Tistory.