오늘의하루

Spring Security - 세션 생성 정책 본문

Spring/Security

Spring Security - 세션 생성 정책

오늘의하루_master 2024. 5. 13. 17:46

 

 

GitHub - dukbong/Practice-Spring-Security: 세션 기반 인증 - 예시

세션 기반 인증 - 예시. Contribute to dukbong/Practice-Spring-Security development by creating an account on GitHub.

github.com

Session 생성 정책이란?

Spring Security에서 Http Session을 어떻게 다룰지를 결정하는 것입니다.

이러한 정책은 Spring Security의 설정 파일에서 sessionManagement() 메소드를 사용하여 구성되며 세션 생성 정책은 보안 및 성능 요구 사항에 따라 조정해서 사용할 수 있습니다.

생성 정책의 종류

SessionCreationPolicy Enum 타입으로 지정되어있는 세션 생성 정책은 다음과 같습니다.

  1. ALWAYS : 잘 사용되지 않는다.
    • 장점
      • 항상 새로운 세션을 생성하여 이전 세션과의 연관성을 없애므로 세션 고정 공격을 방지할 수 있습니다.
    • 단점
      • 세션 생성 오버헤드가 높을 수 있습니다.
      • 매번 새로운 세션을 생성하면 사용자가 이전 세션의 상태를 유지할 수 없기 때문에 사용자에게 불편함을 줄 수 있다.
  2. IF_REQUIRED : 세션을 사용한다면 가장 좋은 선택지가 될 수 있을 것 같다.
    • 장점
      • 세션 생성 오버헤드를 줄일 수 있고 필요한 경우에만 세션을 생성하므로 성능을 향상시킬 수 있습니다.
    • 단점
      • 필요할 때만 세션을 생성하므로 요청마다 세션 상태를 확인하기 때문에 세션 관리 오버헤드가 생길 수 있습니다.
  3. NEVER : 사용하게 된다면 토큰 기반 인증에서 사용한다.
    • 장점
      • 세션 관리 오버헤드가 없으므로 성능을 향상시킬 수 있습니다.
      • 세션 관련 보안 문제에서 완전히 자유로워집니다.
    • 단점
      • 상태를 유지하지 않으므로 사용자 간의 상호작용이 제한될 수 있습니다.
  4. STATELESS : 토큰 기반이나 RestFul API에서 주로 사용된다.
    • 장점
      • 세션 관리 오버헤드가 없으므로 성능을 향상시킬 수 있습니다.
      • CSRF 공격을 방어할 필요가 없는 경우에 유용합니다.
    • 단점
      • CSRF 방어를 비활성화합니다. 따라서 보안 상의 취약점이 존재할 수 있습니다.
Comments