HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🚀
개발 노트
/
🍪
쿠키와 세션1: 쿠키
🍪

쿠키와 세션1: 쿠키

 
HTTP의 특성쿠키사용목적종류쿠키의 사용 원리 옵션 장점 단점참고 자료
 
쿠키와 세션에 대해 공부한 내용을 정리한 글입니다.
먼저 쿠키에 대해서 정리합니다.

HTTP의 특성

쿠키와 세션을 이해하려면 먼저 HTTP의 특성을 알아야 한다.
  • HTTP: 인터넷상에서 데이터를 주고 받기 위해 서버/클라이언트 모델을 따르는 통신규약
  • 비연결성(Connectionless), 비상태성(Stateless)
    • 서버와 클라이언트의 연결 상태를 유지하지 않고, 연결 해제 후 상태 정보를 저장하지 않음
    • 서버의 자원을 절약하기 위함
    • 요청마다 새로운 사용자로 인식하는 단점 (같은 사용자인지 식별이 어려움)
 
이러한 단점을 보완하여, 서버가 클라이언트를 식별하도록 돕기 위해 쿠키와 세션 사용
 

쿠키

“내가 가지고 있으면서 서버를 이용할 때마다 보여주는 것”
 
  • 웹 사이트에 접속할 때 생성되는 정보를 담은 임시 텍스트 파일
  • 서버가 사용자의 웹 브라우저에 저장하는 데이터
  • 데이터 형태는 Key와 Value로 구성되고, String 형태로 이루어져 있다.
  • 브라우저마다 저장되는 쿠키는 다르다.
    • 서버에서는 브라우저가 다르면 다른 사용자로 인식한다.
 

사용목적

  1. 세션 관리(Session Management)
    1. 로그인, 닉네임, 접속 시간, 장바구니 등 서버가 알아야 할 정보들을 저장
  1. 개인화(Personalization)
    1. 사용자마다 다르게 그 사람에 적절한 페이지를 보여줄 수 있음 (사용자 정보 유지)
  1. 트래킹(Tracking)
    1. 사용자의 행동과 패턴을 분석하고 기록
 

종류

  1. Session Cookie
    1. 메모리에만 저장. 만료시간을 설정하지 않으면 브라우저 종료 시 삭제
  1. Persistent Cookie
    1. 파일로 저장. Max-Age 설정을 통해 장기간 유지 가능하다.
      브라우저 종료와 관계없이 사용 가능.
  1. Secure Cookie
    1. HTTPS에서 사용되는 암호화된 쿠키. 그러나 실질적 보안은 제공되지 않음.
  1. Third Party Cookie
    1. 다른 도메인에 요청이 필요할 때 생성하는 쿠키. 주로 광고 목적으로 사용됨.
       

쿠키의 사용 원리

  1. 클라이언트가 서버에 HTTP 요청
  1. 서버는 HTTP 응답 시 set-cookie를 통해 쿠키 생성하여 전달
  1. 클라이언트는 이제 HTTP 요청마다 헤더에 쿠키를 담아 전송
  1. 서버는 전송받은 쿠키와 서버에 저장된 사용자 정보를 비교하여 동일한 사용자임을 인식
  1. 만료 기간 이전이라면, 위와 같이 사용함
  1. 만료되었다면 서버에 새로 요청하여 쿠키를 새로 발급
 

옵션

  • HttpOnly
    • 브라우저에서 JS를 통해 쿠키 접근 불가능
  • HTTP secure
    • HTTPS 통신 외에서는 쿠키를 전달하지 않는다.
  • SameSite
    • 크로스사이트 요청 시 전송 허용 여부 (None, Strict, Lax)
  • Domain
    • 쿠키에 대한 Domain 설정
      설정한 도메인을 대상으로 한 요청에서만 쿠키가 전송됨
      (기본값: 쿠키를 보낸 서버의 도메인)
       

장점

  • 대부분의 브라우저가 지원
  • 데이터 유효기간 지정 가능
  • XSS로부터 안전 (httpOnly 옵션 설정 시)
 

단점

  • 작은 데이터 저장 용량 (4KB)
  • 서버에 HTTP 요청마다 전달되므로, 서버에 부담
  • 암호화가 안 되어 있어 유저 정보 도난 위험
  • 개인정보가 저장되므로 사생활 침해의 소지
    • (브라우저에는 쿠키 거부 기능이 있음)
  • 문자열만 저장 가능
  • CSRF 공격에는 취약
    • 브라우저가 서버에 요청을 보낼 때 쿠키를 자동으로 포함해서 보낸다.
      만약 그 쿠키에 세션ID, 액세스 토큰 등이 들어있다면 해커가 내 인증정보를 활용해서
      서버에 나인 것처럼 위장해서 요청을 보낼 수 있다.
 
 

참고 자료

[web] 쿠키(cookie)와 세션(session)의 개념/차이/용도/작동방식
쿠키와 세션을 이해하기 위해서는 먼저 http의 특징에 대해 이해하면 도움이 됩니다. HTTP(Hypertext Transfer Protocol)는 인터넷상에서 데이터를 주고 받기 위해 서버/클라이언트 모델을 따르는 통신규약을 말합니다. 이 HTTP 프로토콜에는 비연결성(Connectionless)과 비상태성(Stateless)이 라는 특징이 있습니다. 이는 서버의 자원을 절약하기 위해 모든 사용자의 요청마다 연결과 해제의 과정을 거치기 때문에 연결 상태가 유지되지 않고, 연결 해제 후에 상태 정보가 저장되지 않는다는 것입니다.
[web] 쿠키(cookie)와 세션(session)의 개념/차이/용도/작동방식
https://devuna.tistory.com/23
[web] 쿠키(cookie)와 세션(session)의 개념/차이/용도/작동방식
velog.io
https://velog.io/@hs0217/%EC%BF%A0%ED%82%A4-%EB%A1%9C%EC%BB%AC-%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80-%EC%84%B8%EC%85%98-%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80
simsimjae.tistory.com
https://simsimjae.tistory.com/482