Session의 이해를 위해 HTTP특징 Cookie의 개념을 선행해야한다.
HTTP 특징, Cookie의 개념 → Cookie
이 글에선 Session의 개념과 Cookie와의 비교를 설명하고자 한다.
Session
Session은 사용자가 웹 서버에 접속해 있는 동안 상태를 유지할 수 있도록 하는 기술이다.
사용자의 정보들을 브라우저에 저장하는 쿠키와는 달리 Session은 서버에서 유지, 관리한다.
쿠키는 보안이 취약하기 때문에 쿠키의 보완 목적으로도 Session이 사용된다.
브라우저가 종료되기 전까지 클라이언트의 요청을 유지한다.
Session 특징
- 저장 용량의 제한이 없다.
- 서버에선 세션 객체를 생성하여 요청받은 각 클라이언트 별로 고유한 세션 ID를 부여한다.
- 쿠키에 세션 ID값을 담아 클라이언트에 응답한다.
- 클라이언트 ID를 각각 독립적으로 관리하기 때문에 쿠키보다 비교적 보안성이 좋다.
- 사용자의 브라우저가 종료되는 시점에 세션 쿠키도 제거된다.
Session 동작원리 ( 로그인과정 예시 )
- 사용자가 웹 사이트에서 ID, Password를 입력하여 서버에 로그인 요청을 보낸다.
- 서버는 DB를 확인하여 일치한다면 세션 객체를 생성하고 세션 ID를 부여한 뒤 서버 메모리에 저장한다.
- 로그인 요청의 응답으로 쿠키에 세션ID를 담아 사용자에게 보낸다.
- 사용자가 요청을 보낼 때 쿠키에 세션ID를 담아 요청을 보낸다.
- 서버에선 로그인 정보를 다시 확인하지 않고 세션ID를 통해 확인한다.
- 세션 ID가 유효하다면 해당 요청의 응답을 사용자에게 보낸다.
세션의 단점
- 사용자가 많을 수록 서버의 메모리를 많이 차지하게 된다.
- 동시 접속자의 수가 많은 웹사이트의 경우엔 서버 과부하의 원인으로 성능저하의 요인이다.
세션 & 쿠키 비교
세션과 쿠키를 동등한 위치에서 비교할 수 없는데 그 이유는 세션도 쿠키를 사용하기 때문이다.
쿠키를 보안성을 보완하기 위해 세션을 사용한다고 보면 된다.
정보 저장 위치
쿠키 : 클라이언트
세션 : 서버
사용자의 정보가 저장되는 위치가 쿠키는 클라이언트, 세션은 서버에 저장한다. 쿠키는 서버의 자원을 사용하지 않고 세션은 서버의 자원을 사용한다.
요청 & 응답속도
쿠키 : 세션보다 상대적으로 속도가 빠르다 할 수 있다.
세션 : 쿠키와 달리 서버에서의 처리 과정이 추가되어 쿠키보다 느리다.
만료시점
쿠키 : 쿠키 저장할 때 설정한 기간이 지나면 삭제 (브라우저 종료시에 삭제되지 않는다.)
세션 : 브라우저 종료시에 삭제
저장방식
쿠키 : text → text의 형태로 저장된다.
세션 : object → 서버에서 세션 객체의 형태로 저장된다.
참조
https://surprisecomputer.tistory.com/36