• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

세션, 쿠키 생성되는 조건

21.04.15 16:34 작성 조회수 287

2

안녕하세요, 강의 잘 보고 있습니다.

세션 고정 보호에 대해서 질문이 있습니다. 테스트를 하실때 세션 고정 공격을 위해서 sessionFixation()을 none으로 변경 한 후에 공격자가 웹서버 접속만으로 쿠키에 JSESSIONID가 할당되는 것을 확인했습니다.

제가 기존에 알고 있던 지식은 로그인을 통해 인증 절차를 받아야 사용자 세션이 생기고 세션ID를 클라이언트 쿠키에 담아주는 것으로 알고 있었는데 테스트에서는 인증을 하지 않았는데 어떻게 세션ID가 있는건가요? 아니면 제가 잘 못 알고 있는건지..

감사합니다!

답변 1

답변을 작성해보세요.

9

세션ID 는 클라이언트가 서버에 접속하게 되면 세션쿠키 형태로 발급이 됩니다.

서블릿에서는 JSESSIONID 로 생성합니다.

일반적으로 세션 ID 는 인증과는 무관합니다.

인증은 세션 ID 를 가진 사용자가 본인이 맞는지를 검증하는 단계이지 서버가 인증유무에 따라 세션 ID 를 발급하는 것은 아닙니다.

서버에서는 클라이언트에서 가지고 온 세션 ID 를 기준으로 해서 세션영역에 저장된 여러가지 속성들을 관리합니다.

거기에 로그인 관련된 정보도 포함됩니다.

한가지 기억하실 점은 세션 ID 는 웹 환경일 경우에는 WAS 가 생성을 합니다. 

스프링 시큐리티가 직접 생성을 하지 않더라고 WAS 단에서 먼저 생성을 하기 때문에 브라우저 전달을 한다고 볼 수 있습니다.

Byunghyun Yoon 님께서 알고 계신 인증이 되어야만 세션이 생성된다는 부분은 스프링 시큐리티 관점에서는 그럴 수 있습니다

스프링 시큐리티는 기본적으로 인증을 하지 않거나 세션을 생성하지 않는 정책을 설정 할 경우 세션을 생성하지 않습니다. 하지만 만약 WAS 가 세션을 생성하거나 다른 영역에서 세션을 생성할 경우 그 세션을 사용합니다.

참고하시기 바랍니다.

WAS에서 인증 여부와 상관없이 세션을 생성할 수 있군요! 많이 배워갑니다 감사합니다!