[Spring Boot] 10. Session & Cookies

김미숙's avatar
Jul 21, 2025
[Spring Boot] 10. Session & Cookies
notion image

❓Session

➡ 클라이언트(사용자)와 서버간의 연결(접속)을 상태 있게 유지하기 위한 수단
➡ 사용자가 웹사이트에 접속하면, 서버는 해당 사용자에게 고유한 세션 ID를 발급하고, 로그인 상태, 장바구니, 권한 정보 등을 서버에 저장하여 여러 요청 간에도 사용자를 식별하고 상태를 유지할 수 있도록 도와준다.
📦 세션의 구조와 동작 원리
  • 사용자가 웹사이트에 처음 접속
  • 서버가 세션 ID 생성 (랜덤 문자열)
  • 클라이언트의 쿠키에 세션 ID 저장
  • 이후 요청마다 브라우저가 이 세션 ID를 함께 전송
  • 서버는 세션 ID를 기준으로 해당 사용자의 상태를 찾아서 유지
🔐 세션의 특징
항목
설명
저장 위치
보통 서버 메모리 or DB (Spring에서는 HttpSession)
보안
세션 ID가 유출되면 탈취 가능 → HTTPS 필요
수명
브라우저 종료 시 또는 일정 시간 후 만료
용도
로그인 유지, 장바구니, 사용자 맞춤 설정 등
 
➡ 사용자가 방문한 웹사이트에서 사용자의 브라우저에 전송하는 작은 텍스트 조각
➡ 웹사이트는 쿠키를 통해 접속자의 장치를 인식하고, 접속자의 설정과 과거 이용내역에 대한 일부 데이터를 저장한다.
➡ 쿠키가 있으면 웹사이트에서 사용자의 방문에 관한 정보를 기억하여 다음 번에 사이트에 방문했을 때 번거로운 작업을 피하고 더 유용하게 사이트를 활용할 수 있다
쿠키는 외투를 맡기고 받는 표와 비슷하다.
“외투”를 코트 보관소에 맡긴다
  • 웹사이트에 접속하거나 사이트를 방문하면 데이터 패킷이 웹사이트 서버에서 사용자에게 연결된다. 이 데이터는 사용자의 개인 계정이거나 쇼핑 카트이거나 심지어는 사용자가 방문했던 페이지일 수도 있다.
"외투" 소유자임을 확인하는 "표"를 받는다
  • (데이터가 포함된) 쿠키가 사용자에게 제공되고 웹 브라우저에 저장된다. 쿠키에는 사용자만을 위한 고유 ID가 있다.
다른 곳을 갔다가 돌아오면 "표"를 사용하여 "외투"를 받는다.
  • 웹사이트를 다시 방문하면 브라우저가 웹사이트에 쿠키를 반환한다. 그러면 웹사이트가 고유 ID를 쿠키에서 읽고 사용자의 활동 데이터를 모아 사용자가 전에 방문했던 위치로 사용자를 다시 보내므로 사이트를 떠난 적이 없는 것처럼 느껴진다.
notion image
  • 첫 Server 실행 때는 Cookie가 없음
    • notion image
  • login-form을 요청하면 Cookie가 생긴다
    • notion image
  • Network를 확인하면 Response HeaderSet-Cookie에서 생긴 Cookie를 확인할 수 있다
    • notion image
  • Cookie 생긴 이후 아무 다른 페이지를 요청하면
    • notion image
  • Response Header가 아닌 Request Header에 Cookie 값이 확인된다(이미 key를 줬으니까)
    • notion image
⚠ Test는 모든 인터넷 창을 다 끄고 한다
 

🧁 세션 vs 쿠키 차이

항목
세션
쿠키
저장 위치
서버
클라이언트(브라우저)
보안성
상대적으로 안전
노출 위험 있음
용량
작음 (수KB, 오직 식별용)
비교적 큼 (최대 4KB)
유지 방식
서버가 상태 기억
클라이언트가 상태 보관
Share article

parangdajavous