이번 포스트에서는 쿠키와 세션의 정의, 특징, 차이점 등에 대해 다뤄보도록 하겠습니다.
쿠키
쿠키의 개념:
쿠키(cookie)는 HTTP의 일종으로 사용자가 어떠한 웹 사이트를 방문할 때 발생하는 여러 가지 정보를 브라우저에 저장하는 임시 저장 파일입니다. HTTP에서 클라이언트의 상태 정보를 클라이언트의 PC에 저장하였다가 필요할 때 그 정보를 참조하거나 재사용할 수 있습니다. 따라서 쿠키는 클라이언트 측의 정보라고도 할 수 있습니다.
대표적인 쿠키의 예시느 바로 "자동 로그인"이라 할 수 있습니다. 사용자는 어떠한 웹 사이트를 방문할 때 자동 로그인 기능을 선택하면, 자신의 로그인 정보를 쿠키에 담아 브라우저에 저장하다가 나중에 웹 사이트를 재방문할 때 그 쿠키에 담긴 정보로 로그인하여 서버에 정보를 보내줄 수 있습니다.
쿠키의 동작 방식:
- 클라이언트가 페이지를 요청
- 서버 측에서 쿠키 생성
- HTTP 헤더에 쿠키값을 포함해서 클라이언트 쪽으로 전송
- 클라이언트 측은 브라우저에 쿠키를 저장하다가 같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보낸다
- 서버 측에서 쿠키를 읽어 이전 상태 정보를 변경할 필요가 있을 경우 쿠키를 업데이트하여 변경된 쿠키값을 HTTP 헤더에 포함해서 응답
쿠키의 특징:
- 쿠키의 크기는 개당 최대 4KB(4096byte)까지 저장 가능
- 클라이언트에 저장
- 이름, 값, 만료일, 도메인, 경로 정보로 구성
- 하나의 도메인 당 최대 20개의 쿠키까지 저장 가능
- 클라이언트는 최대 300개의 쿠키까지 저장 가능
세션
세션의 개념:
세션(session)은 서버에서 클라이언트에 대한 정보를 담아두고 연결 상태 동안 들어오는 요청은 같은 클라이언트로 인식해 상태와 설정을 유지하는 것입니다. 즉, 사용자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라고 합니다. 또한 쿠키는 클라이언트에서 서버로 보내 사용자를 식별했다면, 세션은 그 식별 정보를 서버가 가지고 있는 방식입니다.
대표적인 세션의 예시로는 사용자가 어떤 웹 페이지에 로그인 하고 나면, 아무리 화면을 이동해도 로그인이 풀리지 않고 로그아웃하기 전까지 유지된다는 것입니다.
세션의 동작 방식:
- 클라이언트가 서버에 접속 시 세션 ID를 발급 받는다
- 클라이언트는 세션 ID에 대해 쿠키를 사용해서 저장
- 클라이언트는 서버에 요청할 때 세션 ID를 포함해서 요청
- 서버는 세션 ID를 전달 받아 세션에 세션 ID와 매칭되는 클라이언트 정보를 가져와서 사용
- 클라이언트 정보를 가지고 서버 요청을 처리하여 클라이언트에게 응당
세션의 특징:
- 클라이언트마다 고유 SESSION ID(난수값) 부여
- 서버에 저장
- 쿠키보다 큰 용량을 가지고 있다.(사실상 거의 무제한)
- 브라우저 종료시 세션 쿠키가 삭제된다
- 쿠키보다 보안적인 측면에서 더욱 안전
쿠키와 세션의 차이점을 표로 정리하자면 다음과 같습니다. (쿠키와 세션만 놓고 봤을 때)
쿠키(cookie) | 세션(session) | |
저장 위치 | 클라이언트 | 서버 |
저장 형식 | Text | Object |
만료 시점 | 브라우저 종료시 삭제 X, 만료 시점이 지날 때 삭제 | 브라우저 종료시 즉시 삭제 |
리소스 자원 | 클라이언트 리소스 | 서버 리소스 |
용량 제한 | 총 300개, 도메인 당 20개, 쿠키당 4KB | 서버가 허용하는 한 제한 없음 |
속도 | Fast | Slow |
보안 | Bad | Good |
'Web' 카테고리의 다른 글
HTTP 상태 코드 (HTTP Status Code) (0) | 2022.03.25 |
---|---|
HTTP 요청 메소드 (HTTP Request Method) (0) | 2022.02.02 |
URL Meta 문자 (0) | 2022.02.01 |