HTTP에 상태 정보를 유지(Stateful)하기 위해 사용
쿠키와 세션은 통해 서버에서는 클라이언트 별로 인증 및 인가를 할 수 있게 됨
클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일
구성 요소
서버에서 일정시간 동안 클라이언트 상태를 유지하기 위해 사용
서버에서 클라이언트 별로 유일무이한 세션 ID를 부여한 후 클라이언트 별 필요한 정보를 서버에 저장
서버에서 생성한 세션 ID는 클라이언트의 쿠키캆(' 세션 쿠키 ' 라고 부름)으로 저장되어 클라이언트 식별에 사용
서버는 세션ID를 사용하여 세션을 유지
클라이언트가 서버에 1번 요청
서버가 세션ID를 생성하고 쿠키에 담아 응답 헤더에 전달
클라이언트가 쿠키에 세션ID를 저장(' 세션쿠키 ')
클라이언트가 서버에 2번 요청
서버가 세션ID를 확인하고 1번 요청과 같은 클라이언트임을 인지
쿠키(Cookie) | 세션(Session) | |
---|---|---|
설명 | 클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일 | 서버에서 일정 시간동안 클라이언트 상태를 유지하기 위해 사용 |
저장 위치 | 클라이언트(웹 브라우저) | 웹 서버 |
사용 예 | 사이트 팝업의 "오늘 다시보지 않기" 정보 저장 | 로그인 정보 저장 |
만료 시점 | 쿠키 저장 시 만료일시 설정 가능(브라우져 종료시도 유지 가능) | 다음 조건 중 하나가 만족될 경우 만료됨 1. 브라우져 종료 시까지 2. 클라이언트 로그아웃 시까지 3. 서버에 설정한 유지기간까지 해당 클라이언트의 재요청이 없는 경우 |
용량 제한 | 브라우져 별로 다름 (크롬 기준) - 하나의 도메인 당 180개 - 하나의 쿠키 당 4KB(=4096byte) | 개수 제한 없음 (단, 세션 저장소 크기 이상 저장 불가능) |
보안 | 취약 (클라이언트에서 쿠키 정보를 쉽게 변경, 삭제 및 가로채기 당할 수 있음) | 비교적 안전(서버에 저장되기 때문에 상대적으로 안전) |