Spring Security - 세션 고정 보호 API

2021. 4. 15. 16:51SPRING/SPRING SECURITY

세션 고정 공격이란?

  • 공격자가 서버에 접속하여 세션쿠키를 얻어낸뒤, 사용자에게 해당 세션쿠키를 심어둡니다.
  • 이런 상황에서 사용자가 서버에 로그인 인증을 시도하게 되면 같은 세션쿠키를 사용하고 있기 때문에 사용자 정보를 공격자가 접근할 수 있는 상태가 됩니다.

세션 고정 보호

  • 이를 방지하기 위해 사용자가 로그인 인증을 할 때, 세션 ID를 변경한다면 공격자와 사용자의 세션쿠키 정보가 달라지기 때문에 세션 고정 공격을 방지할 수 있습니다.

사용 예제

1
2
3
4
http.sessionManagement().sessionFixation().none();
        http.sessionManagement().sessionFixation().changeSessionId();
        http.sessionManagement().sessionFixation().migrateSession();
        http.sessionManagement().sessionFixation().newSession();
cs
  • none: 세션 고정 공격을 받을 수 있는 상태
  • changeSessionId: 세션 ID만 변경(기본값) 서블릿 3.1 이상에서 사용
  • migrateSession: changeSessionId와 같음. 서블릿 3.0 이하에서 사용
  • newSession: 세션을 새로 만든다. 기존 세션 어트리뷰트 정보들도 모두 초기화 된다.