본문 바로가기

Spring

로그인 처리1 - 쿠키, 세션 : 로그인 처리하기 세션 - 동작 방식

인프런의 영한님 강의를 보고 정리한 글입니다.

무엇을 배웠나요?

  • 쿠키에 중요한 정보를 보관하는 방법은 여러가지 보안 이슈가 있었다.
  • 그러므로 중요한 정보는 모두 서버에 저장해야 한다.
  • 그리고 클라이언트와 서버는 추정 불가능한 임의의 식별자 값으로 연결해야한다.
  • 이렇게 서버에 중요한 정보를 보관하고 연결을 유지하는 방법을 세션이라고 한다.
  • 세션의 동작방식

사용자가 loginId, password 정보를 전달하면 서버에서 해당 사용자가 맞는지 확인한다.
추정 불가능한 세션 ID를 생성하고 생성된 세션 ID와 세션에 보관할 값(memberA)을 서버의 세션 저장소에 보관한다.
서버는 클라이언트에 mySessionId라는 이름으로 세션ID만 쿠키에 담아서 전달하고 클라이언트는 쿠키저장소에 mySessionId 쿠키를 보관한다.

  • 클라이언트와 서버는 결국 쿠키로 연결이 되어야 한다.
  • 중요한 포인트는 회원과 관련된 정보는 전혀 클라이언트에 전달하지 않으며 오직 추정 불가능한 세션 ID만 쿠키를 통해 클라이언트에 전달한다.
  • 클라이언트의 세션ID쿠키 전달

클라이언트는 요청시 항상 mySessionId쿠키를 전달하고 서버는 클라이언트가 전달한 mySessionId 쿠키정보로 세션 저장소를 조회해서 로그인시 보관한 세션 정보르 사용한다.

  • 세션을 사용해서 서버에서 중요한 정보를 관리하게 되었다. 덕분에 다음과 같은 보안 문제들을 해결할 수 있다.
    1. 쿠키 값을 변조 가능 → 예상 불가능한 복잡한 세션 ID를 사용한다.
    2. 쿠키에 보관하는 정보는 클라이언트 해킹시 털릴 가능성이 있다. → 세션 Id가 털려도 여기에는 중요한 정보가 없다.
    3. 쿠키 탈취후 사용 → 해커가 토큰을 털어가도 시간이 지나면 사용할 수 없도록 서버에서 세션의 만료시간을 짧게 유지한다. 또는 서버에서 해당 세션을 강제로 제거하면 된다.