-
[Web] 쿠키(cookie), 세션(session)의 특징과 차이점Web/Web 2022. 9. 9. 16:37
- 개요
- 쿠키(Cookie)
- 쿠키(Cookie)의 목적
- 쿠키(Cookie)의 구성 요소
- 쿠키(Cookie)의 동작 방식
- 세션(Session)
- 세션(Session)의 동작 방식
- 쿠키(Cookie)와 세션(Session)의 차이
개요
쿠키와 세션을 이해하기 위해서는 먼저 HTTP의 특징에 대해 이해해야 한다.
HTTP(Hypertext Transfer Protocol)는 인터넷상에서 데이터를 주고 받기 위해 서버/클라이언트 모델을 따르는
통신규약을 말한다.
HTTP 프로토콜에는 비연결성(Connectionless)과 비상태성(Stateless)라는 특징이 있다.
- 비연결성(Connectionless) : 클라이언트가 요청을 한 후 응답을 받으면 연결을 끊어버림
- 비상태성(Stateless) : 통신이 끝나면 상태를 유지하지 않음
이는 모든 사용자의 요청마다 연결과 해제의 과정을 거치기 때문에 연결 상태가 유지되지 않고,
연결 해제 후에 상태 정보가 저장되지 않는다는 특징을 가진다는 것이다.
이 때문에, 사용자를 식별할 수 없어서 같은 사용자가 요청을 해도 매번 새로운 사용자로 인식하는 단점을 가진다.
하지만 우리가 사용하는 웹사이트는 로그인을 하면, 그 이후에는 로그인을 하지 않는다.
또한 웹사이트 내의 여러 기능을 사용하고, 종료하고 다시 접속해도 로그인이 유지 가능한 경우도 있다.
이러한 HTTP의 비연결성(Connectionless)와 비상태성(Stateless)를 보완하여
서버와 클라이언트를 식별하게 해주는 것이 쿠키(cookie)와 세션(session)이다.
쿠키(Cookie)
브라우저 로컬에 저장되는 키(key)와 값(value)이 들어있는 작은 데이터 파일이다.
클라이언트의 상태 정보를 로컬에 저장했다가 참조한다.
사용자 인증이 유효한 시간을 명시하고, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다.
클라이언트가 Request 할때에, Request Header를 넣어서 자동으로 서버에 전송된다.
사용자 브라우저(클라이언트)에 저장된 값을 확인 가능하기 때문에 보안성이 낮다.
쿠키(Cookie)의 목적
1. 세션 관리(Session management)
=> 서버에 저장해야 할 정보를 관리하기 위해 사용한다.
2. 개인화(Personalization)
=> 사용자가 선호하는 세팅을 위해 사용한다.
3. 트래킹(Tracking)
=> 사용자의 행동을 기록하고 분석하기 위해 사용한다.
쿠키(Cookie)의 구성 요소
- Name(이름) : 쿠키의 이름
- Value(값) : 쿠키의 저장된 값
- Expires(유효시간) : 쿠키가 언제 삭제되는지를 결정, 만약 만료일이 포함되어 있으면 영구적 쿠키로 간주
- Domain : 쿠키가 사용하는 도메인을 지정, 한 도메인에서 다른 도메인에 대한 쿠키를 사용하지 못하게 설정
- Path : 쿠키가 반환할 경로를 결정, 도메인의 루트 경로가 이동할 경우 쿠키를 전송
- Secure : 보안 연결 설정
- HttpOnly : Http 외에 다른 통신 사용 가능 설정
쿠키(Cookie)의 동작 방식
1. 클라이언트가 페이지를 요청
2. 서버에서 쿠키를 생성
3. HTTP 헤더에 쿠키를 포함시켜 응답
4. 브라우저가 종료되더라도 쿠키 만료 기간이 있다면 클라이언트에서 보관
5. 같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보냄
6. 서버에서 쿠키를 읽어 이전 상태 정보를 변경할 필요가 있을 때 업데이트 하여 변경된 쿠키를 HTTP 헤더에 포함
세션(Session)
쿠키를 기반으로 하지만 쿠키와 달리 서버 측에서 관리한다.
서버에서는 클라이언트를 구분하기 위해 세션 ID를 주고 웹 브라우저가 서버에 접속해서
브라우저를 종료할 때까지 인증상태를 유지한다.
세션 ID로 클라이언트를 구분하여 클라이언트의 요구에 맞는 서비스를 제공한다.
접속 시간에 제한을 두어 일정 응답이 없다면 정보가 유지되지 않게 설정 가능하다.
사용자에 대한 정보를 서버에 두기 때문에 쿠키보다 보안이 좋지만, 사용자가 많아지면 서버 메모리를 많이 차지한다.
클라이언트가 Request를 보내면, 해당 서버의 엔진이 클라이언트에게 유일한 ID를 부여한다. => 세션 ID
세션(Session)의 동작 방식
1. 클라이언트가 서버에 접속 시 세션 ID를 받음
2. 클라이언트는 세션 ID에 쿠키를 사용하여 저장
3. 클라이언트는 서버에 요청할 때, 쿠키의 세션 ID를 같이 서버에 전달하여 요청
4. 서버는 세션 ID를 전달 받아 세션 ID로 세션에 있는 클라이언트 정보를 가져와 사용
5. 클라이언트 정보를 가지고 서버 요청을 처리하여 클라이언트에게 응답
쿠키(Cookie)와 세션(Session)의 차이
1. 쿠키는 서버의 자원을 사용하지 않고, 세션은 서버의 자원을 사용한다.
2. 보안은 세션이 더 우수하고, 요청 속도는 쿠키가 세션보다 더 빠르다.
3. 쿠키는 브라우저를 종료해도 계속해서 정보가 남아 있을 수 있다.
하지만 세션은 브라우저가 종료되면 만료시간에 상관 없이 삭제된다.
4. 쿠키는 쿠키에 정보가 있기 때문에 서버 요청시 속도가 빠르지만
세션은 서버에 정보가 있기 때문에 처리가 요구되어 속도가 비교적 느리다.
이미지 출처 : https://ji5485.github.io/static/021f67dd9945884ad7381b35ced2b9e8/0f157/what-is-cookie-and-session.png
'Web > Web' 카테고리의 다른 글
[Web] 웹 스타일링 도구 (CSS, CSS Modules, SCSS, Tailwind CSS, Styled-components) (0) 2024.11.26 [Web] HTTP vs HTTPS 개념 & 차이점 (1) 2022.09.15