인프런 커뮤니티 질문&답변

씽쌩쏭님의 프로필 이미지

작성한 질문수

스프링 시큐리티 완전 정복 [6.x 개정판]

세션 고정 보호 - sessionManagement().sessionFixation()

섹션 5의 세션 고정 보호 강의 질문

작성

·

169

·

수정됨

0

섹션 5의 세션 고정 보호 강의 실습 부분을 보면, 루트경로(/) 로 요청했을때도 응답에 세션아이디가 저장된 쿠기가 날라왔습니다.

즉, 세션 생성 정책이 디폴트(ifRequired ) 인데 서버에 세션이 생성된 것인데, 혹시 세션이 어느부분에서 생성되었는지 알수 있을까요..??

 

++ 추가)) 섹션 5의 SessionManagementFilter / ConcurrentSessionFilter - 2 강의를 보니 .maximumSessions() 설정을 해야만 세션관련 작업을 하는 필터들이 정상적으로 등록된다고 설명돼있는데 위의 실습은 이 설정을 하지 않아서 필터들이 등록되지 않은 걸까요..??

근데 세션 고정 보호 적용은 어떻게 적용된건지 모르겠네요..ㅠㅠ

 

답변 2

0

정수원님의 프로필 이미지
정수원
지식공유자

세션 생성 정책이 ifRequired 로 되어 있다면 필요할 경우 스프링 시큐리티가 세션을 생성합니다.

그리고 세션 객체를 생성하는 것과 세션쿠키가 생성되는 것은 다른 개념입니다.

세션 쿠기는 클라이언트와 서버간의 http 통신시 자동적으로 생성되는 개념입니다.

질문하신 내용이 세션쿠키를 의미하는 것이라면 그건 당연한 것입니다

그게 아니고 HttpSession 객체가 생성된 것이라면 스프링 시큐리티가 필요할 경우 세션을 생성할 수 있습니다.

세션이 생성되는 시점과 이유는 다양하기 때문에 실행시 확인해 봐야 합니다.

0

안녕하세요, 인프런 AI 인턴입니다.

보내주신 문의에 대해 답변드리겠습니다.

세션 생성이 어디에서 이루어졌는지 파악하려면, 먼저 Spring Security에서 세션 관리 방식을 이해해야 합니다. Spring Security에서는 여러 가지 세션 관리 구성 옵션이 있으며, SessionManagementFilterConcurrentSessionFilter는 이 중 일부입니다.

일반적으로 세션이 생성되는 시점은 인증이 필요한 자원에 접근할 때입니다. ifRequired 정책 하에서는 세션이 필요한 경우에만 생성됩니다. 그렇기 때문에 단순히 루트 경로(/)에 접근했다고 해서 항상 세션이 생성되는 것은 아닙니다. 하지만, 해당 경로에 대한 요청 처리 과정 중에 인증, 권한 체크, 또는 기타 필터 작업으로 인해 세션이 필요하게 되면 이 때 세션 생성이 이루어질 수 있습니다.

maximumSessions() 설정에 관해서는, 이는 동시 세션 제어와 관련된 설정입니다. 이 설정이 적용되면 SessionManagementFilterConcurrentSessionFilter가 세션을 관리하기 위해 등록되고, 여러 세션에 걸친 제약을 관리할 수 있게 됩니다. 만약 이 설정이 적용되지 않았다면, 동시 세션 관리 기능이 활성화되지 않으나, 세션 생성 자체는 다른 요인에 의해 이루어질 수 있습니다.

세션 고정 보호에 대해서는, Spring Security에서는 세션 고정 공격에 대비하여 보호 기능을 제공합니다. 이는 구성을 통해 활성화할 수 있으며, 인증 과정에서 새로운 세션을 생성하여 기존의 세션과 연동하는 방식으로 작동합니다. 세션 고정 보호가 구체적으로 어떻게 적용되었는지는 실습의 구성 내용을 참고하셔야 할 것입니다.

세션 관련 동작과 필터의 등록 여부에 대한 궁금증이 해소되지 않았다면, Spring Security의 공식 문서나 해당 부분의 설정 코드를 재검토하는 것이 좋을 것입니다. 추가적으로 설정 또는 코드의 구체적인 부분에 대한 질문이 있다면, 더 자세한 정보를 제공해주세요.

감사합니다.