Cookie와 Session 학습
쿠키(Cookie)
쿠키 특징
- 클라이언트 로컬(하드)에 저장되는 키와 값이 들어있는 작은 데이터 파일
- 클라이언트 상태 정보를 로컬에 저장했다가 참조
- 중요하지 않은 데이터를 저장할 때 주로 사용
- 이름, 값, 만료날짜(쿠키 저장시간), 경로 정보 포함
- 일정시간동안 데이터 저장 가능(로그인 상태 유지에 활용)
- 하나의 쿠키 당 4KB 이하 저장 가능
- 한 도메인 당 20개 저장 가능(총 300개)
- 하나의 도메인에서 설정한 쿠키값이 20개를 초과하면 가장 적게 사용된 쿠키부터 삭제
쿠키 동작 방식
- 클라이언트가 페이지 요청
- 서버에서 쿠키 생성
- HTTP 헤더에 쿠키 포함시켜 응답
- 브라우저 종료되어도 쿠키 만료시간 있다면 클라이언트가 보관하고 있음
- 클라이언트가 같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 서버에 전송
- 서버에서 쿠키를 읽어 이전 상태 정보를 변경 할 필요가 있을 때 쿠키 업데이트하여 변경된 쿠키를 HTTP 헤더에 포함시켜 응답
쿠키 사용 예
- 이벤트 팝업 창(오늘 다시 보지 않음)
- 쇼핑몰 장바구니 기능
세션(Session)
세션 특징
- 세션은 쿠키를 기반하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리
- 일정 시간동안 같은 브라우저로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 유지하는 기술
- 웹 브라우저를 통해 웹 서버 접속하여 브라우저를 종료할 때 까지 유지되는 상태
- 클라이언트가 request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 세션ID 부여
- 중요한 데이터를 저장할 때 주로 사용
- 사용자에 대한 정보를 서버에 두어 쿠키에 비해 보완에 강하나, 사용자가 많아질수록 많은 서버 메모리 차지
- 동접자 수가 많은 웹 사이트의 경우 서버에 과부하를 주게 되어 성능 저하 우려
- 클라이언트가 접속하면 서버에 의해 생성되므로 개수나 용량에 제한 없음
세션 동작 방식
- 클라이언트가 서버 접속 시, 세션 ID 발급
- 클라이언트는 세션 ID에 대해 쿠키 사용하여 Header에 저장
- 클라이언트가 서버에 다시 접속 시 이 쿠키를 이용하여 세션 ID 값을 서버에 전달
- 세션 ID가 없다면, 서버는 세션 ID 생성하여 클라이언트에게 전송
세션 사용 예
- 화면이 이동해도 로그인이 해제되지 않고 로그아웃 하기 전까지 유지되고 있는 것
3. 쿠키와 세션의 차이
- 가장 큰 차이점은 사용자의 기록 정보가 저장되는 위치
- 보안 면에서 세션이 우수
- 쿠키는 클라이언트 로컬에 저장되므로 변질되거나 request에서 스나이핑 당할 가능성 높음
- 세션은 쿠키를 이용하여 sessionid만 저장하고, 서버에서 처리하므로 비교적 보안성 높음
- 요청 속도 면에서 쿠키가 우수
- 쿠키는 서버의 자원을 전혀 사용하지 않으나, 세션은 서버의 자원 사용
- 참고) 캐시는 이미지나 css, js파일 등이 사용자의 브라우저에 저장이 되는 것
- 그 후 다시 같은 사이트 접속 시, css, js, 이미지 파일을 서버가 아닌 사용자의 PC에서 가져옴
Posted