세션의 생명주기

임건·2020년 12월 4일
0
post-thumbnail

세션의 생명주기
한 클라이언트가 하나의 브라우저를 이용해 최초의 요청을 보내면 세션이 시작된다.

서버에서는 최초의 요청을 알아내기 위해 ID 값을 읽어온다.

현재 우리는 이 값을 읽어오는 방식으로 쿠키를 이용한다.

클라이언트에서 요청이 온다 1번
클라이언트에게 응답을 보낸다 2번
ID를 헤더에 같이 동봉하여 보낸다.

그럼 이 세션ID를 쿠키로 저장한다.
이제 두번째 요청[3번]이 발생하면 이번에도 같이 ID를 리퀘스트헤더에 쿠키헤더에 저장해 서버에 보낸다.

서버에서는 이 ID를 읽어 동일한 ID임을 알고 세션을 유지하게 된다.

클라이언트와 서버에 세션ID를 저장할 수 있는데,
클라이언트에 쿠키에 세션ID를 저장할 때에 단점은, 예로 음악 스트리밍 서비스에서 로그인 하지 않고도 재생목록을 저장할 수 있는 이유는 클라이언트의 쿠키에 저장하기 때문이다. 하지만 이는 클라이언트에게 큰 부하를 준다. 서버에 저장하는것이 아님.

그런데 이 재생목록 파일들이 문자열이 아닌데 이를 문자열로 저장하기 위해 직렬화, 마샬링 과정이 필요하다.
이를 서버에서는 역직렬화, 언마샬링해 스트리밍 서비스를 지원하게 된다.

첫째는 부하가 많이 걸린다는것.

두번째는?
한 사이트에서 저장할 수 있는 쿠키가 제한되어 있다는 것이다. 요청과 응답 사이 보낼 수 있는 쿠키의 용량은 제한이 있다.
또한 클라이언트에 쿠키가 저장되어 있기때문에 PC방 혹은 타인이 내 컴퓨터를 볼 수 있는 경우에 보안에 취약하다.

또한 쿠키삭제시 세션ID가 삭제되기 때문에 매번 ID를 서버에 요청해야한다.

이런 단점을 해결하기 위해
시큐어 코딩을 이용해 암호화된 세션을 보관하는 방법도 있지만 이러한 방법들은 불안정하다.

profile
프론트엔드 개발자 지망생입니다.

0개의 댓글