백엔드 개발자라면 대답해야 할 100가지 질문

22. 세션의 동작 과정

ignuy 2024. 6. 27.

21. 세션과 쿠키의 차이점을 알아봤다. HTTP가 기본적으로 stateless하니 클라이언트의 정보를 저장하기 위해서 두 가지 전략이 생겨났고 클라이언트에 클라이언트의 상태를 저장하는 것을 쿠키, 서버가 클라이언트의 상태를 저장하는 것을 세션이라고 불렀다. 이번엔 세션의 동작 과정을 알아보자.

 

세션 생성

사용자가 웹사이트를 방문하여 아이디, 비밀번호 등의 인증정보를 통해 사용자 정보를 확인받으면 서버는 그 사용자를 위한 새로운 세션을 생성한다. 이 때, 서버는 고유한 세션 ID를 생성하여 클라이언트에게 전달한다. 세션 ID는 일반적으로 쿠키를 통해 클라이언트에게 저장된다.

세션 저장

서버는 세션 ID를 키로 사용하여 세션 데이터를 서버 측 저장소에 저장한다. 세션 데이터에는 사용자의 로그인 상태, 장바구니 내용 등 상대적으로 보안에 민감한 중요한 상태 정보가 포함된다.

클라이언트 요청

클라이언트가 서버에 요청을 보낼 때마다 브라우저는 자동으로 세션 ID가 포함된 쿠키를 서버에 전송한다. 서버는 요청을 받을 때 세션 ID를 사용하여 해당 세션을 식별하고 세션 저장소에서 관련 데이터를 조회한다.

세션 데이터 사용

서버는 조회된 세션 데이터를 사용하여 사용자의 요청을 처리한다. 예를 들어, 사용자가 로그인 상태인지 확인하거나 장바구니 내용을 제공할 수 있다. 처리된 결과는 클라이언트에게 응답으로 전달된다.

세션 갱신

서버는 필요 시 세션 데이터를 갱신한다. 예를 들어, 사용자가 새로운 아이템을 장바구니에 추가하면 세션 데이터가 업데이트된다. 갱신된 세션 데이터는 다시 세션 저장소에 저장된다.

세션 종료

세션은 명시적으로 종료가 가능하다. 예를들어, 사용자가 로그아웃해 달라는 요청을 서버로 보내면 서버는 세션을 삭제하게 된다. 명시적으로 요청을 보내지 않아도 세션에는 유효 기간이 설정되어 있다. 사용자가 일정 시간 동안 활동하지 않으면 세션이 자동으로 만료되어 삭제된다.

세션 보안

세션 ID는 민감한 정보이다. 이를 보호하기 위해 HTTPS 를 사용하여 데이터 전송을 암호화하고, 세션 ID를 자주 변경하거나 재생 공격 방지 메커니즘을 도입해야 한다.

세션의 동작 과정

 

댓글