///////
Search
🎮

Cookie와 Session 방식은 어떠한 차이점을 가지나요?

HTTP의 특징

비연결성(Connectionless), 비상태성(Stateless) 특징이 있다
모든 사용자의 요청마다 연결과 해제의 과정을 거친다
연결 상태를 유지하지 않음
연결 해제 후에도 상태 정보를 저장하지 않음
서버의 자원을 절약
사용자를 식별할 수 없어서 같은 사용자가 요청을 여러번 해도 새로운 사용자로 인식
해당 문제를 보완하기 위해 쿠키와 세션을 사용

쿠키란?

웹 사이트에 접속할 때 생성되는 정보를 담은 임시 파일
서버를 대신해 정보를 웹 브라우저에 저장
→ 웹 브라우저를 이용하는 컴퓨터에 저장
String 형태로 이루어진 Key와 Value로 구성
브라우저마다 사용되는 쿠키는 다름
Chrome의 쿠키는 Firefox에서 사용할 수 없음
서버에서 브라우저가 다르면 다른 사용자로 인식

쿠키의 사용 목적

1.
세션 관리(Session management)
a.
서버에 저장해야 할 로그인, 장바구니, 게임 스코어 등의 정보 관리
2.
개인화(Personalization)
a.
사용자 선호, 테마 등의 세팅
3.
트래킹(Tracking)
a.
사용자 행동을 기록하고 분석하는 용도

쿠키 생성

1.
HTTP 요청을 수신할 때 서버는 응답과 함께 Set-Cookie 헤더를 전송
a.
Cookie HTTP 헤더 안에 포함되어 전송
b.
만료일, 지속시간 명시 가능
c.
특정 도메인 / 경로 제한을 설정 가능
Set-Cookie: <cookie-name>=<cookie-value>
HTML
복사
2.
서버 헤더는 클라이언트에게 쿠키를 저장하라고 전달
HTTP/1.0 200 OK Content-type: text/html Set-Cookie: yummy_cookie=choco Set-Cookie: tasty_cookie=strawberry [page content]
HTML
복사
3.
서버로 전송되는 모든 요청과 함께, 브라우저는 Cookie 헤더를 사용하여 서버로 이전에 저장했던 모든 쿠키들을 회신
GET /sample_page.html HTTP/1.1 Host: www.example.org Cookie: yummy_cookie=choco; tasty_cookie=strawberry
HTML
복사

쿠키의 단점

4KB의 데이터 저장 제한
매 HTTP요청에 포함되어 있어 웹을 느려지게 하는 원인
같은 쿠키는 도메인 내의 모든 페이지에 같이 전달 됨
HTTP 요청에 암호화 되지 않고 보내기 때문에 보안에 취약함
쿠키는 사용자의 로컬에 텍스트로 저장 되어있어 쉽게 접근, 내용 확인이 가능함
→ 위 문제를 해결하기 위해 Web Storage APIs를 사용해 정보 저장하는 것을 권장

세션이란?

일정 시간 동안 같은 사용자로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그 상태를 유지시키는 기술
일정시간
→ 방문자가 웹 브라우저를 통해 웹 서버에 접속한 시점부터 종료하여 연결을 끝내는 시점
세션 아이디는 웹 브라우저당 1개씩 생성되어 웹 컨테이너에 저장
브라우저 종료시 소멸
로그아웃 시 새로운 사용자로 인식
→ 쿠키보다 비교적 보안이 좋다
서버 측에서 저장하고 관리 → 저장 데이터 용량에 제한이 없다
아이디, 닉네임 등을 세션에 저장하면 DB에 접근할 필요가 없어서 효율적

세션 동작 순서

1.
클라이언트가 페이지를 요청(사용자가 웹사이트 접근)
2.
서버는 클라이언트의 Cookie를 확인하여, 클라이언트가 해당 session-id를 보냈는지 확인
3.
session-id가 존재하지 않는다면, 서버는 session-id를 생성해 클라이언트에게 반환
4.
서버에서 클라이언트로 돌려준 session-id를 쿠키를 사용해 서버에 저장
5.
클라이언트는 재접속 시, 이 쿠키(JSESSIONID)를 이용하여 session-id 값을 서버에 전달

쿠키와 세션의 차이

쿠키(Cookie)
세션(Session)
저장 위치
클라이언트(접속자 PC)
웹 서버
저장 형식
text
Object
만료 시점
쿠키 저장시 설정(브라우저가 종료되도, 만료시점이 지나지 않으면 자동삭제되지 않음)
브라우저 종료시 삭제(기간 지정 가능)
사용하는 자원(리소스)
클라이언트 리소스
웹 서버 리소스
용량 제한
총 300개하나의 도메인 당 20개하나의 쿠키 당 4KB(=4096byte)
서버가 허용하는 한 용량제한 없음.
속도
세션보다 빠름
쿠키보다 느림
보안
세션보다 안좋음
쿠키보다 좋음
쿠키는 자동완성, ‘이 창 다시 보지 않기’ 등 사용자의 편의를 위한 정보 보관
삭제되거나 유출되어도 문제 없는 수준의 정보를 저장
세션은 누군가에게 노출되면 안되는 중요한 정보를 저장

참고