티스토리 뷰

spring boot

[Java] 세션, 쿠키

햄밥김치참치버거 2026. 4. 12. 02:01

프로젝트를 만들면서 로그인 기능을 구현하게 된다면

이 기능을 구현하는 방법은 여러가지 방법이 있습니다. (Session, JWT, OAuth2 , Cookie , API , OTP 등)

여기서 다뤄볼건 세션과 쿠키 입니다.

세션, 쿠키 차이점

  세션 쿠키
저장위치 웹 서버 클라이언트(접속자 PC)
저장형식 Object(객체) text(key-value)
만료시점 브라우저 종료시 삭제(기간 지정 가능) 쿠키 저자이 설정(만료 시간 기준)
사용하는 자원 웹 서버 리소스 클라이언트 소스
용량제한 서버가 허용하는 한 용량제한 X 총 300개 하나의 도메인 당 20개 하나의 쿠키당 4KB
속도 쿠키보단 느림 세션보다 빠름
보안 쿠키보다 좋음 세션보다 별로
사용예시 로그인 상태 관리, 민감정보 장바구니, 자동 로그인

쿠키(Cookie)

개념:

클라이언트(브라우저)에 저장되는데이터

key-value 쌍으로 이루어진 작은 데이터 조각

HTTP 요청/응답 헤더에 포함되어 서버와 클라이언트 간 교환 됨

특징:

클리이언트 측에 데이터가 저장이 됨

브라우저를 닫아도 만료시간 까지 데이터 유지

보안이 취약할 수 있고 민감한 데이터 저장에는 부적합

용량 제한(4KB)

사용 시점:

1.유지해야 할 데이터가 클라이언트 측에서 관리 가능할 때

ex) 사용자 설정(테마, 글꼴 , 언어)

2.사용자가 특정 데이터에 장기적으로 접근할 필요가 있을 때

ex) 자동 로그인, 방문자 통계, 장바구니 정보

3.세션 없이 가볍게 데이터를 유지하고 싶을 때

쿠키 활용 > 세션관리, 개인화 , 트래킹

  1. 클라이언트 -> 서버 요청
  2. 서버는 클라이언트측에 저장할 정보를 응답 헤더의 Set-Cookie에 담음
  3. 이후 클라이언트는 요청을 보낼 때마다, 매번 저장된 쿠키를 요청 헤더의 Cookie에 담아 보냄

쿠키 코드 사용 찍먹


세션 (Session)

개념:

● 서버 측에서 관리되는 데이터

클라이언트와 서버 간의 상태를 유지하기 위한 데이터 저장소

각 사용자는 고유한 세션 ID를 부여받고, 부여 받은 세션 ID로 서버에서 데이터를 식별

특징:

● 서버 측에 데이터가 저장되므로 보안이 상대적으로 강함

● 브라우저가 닫히거나, 세션이 만료되면 데이터가 삭제됨.

● 메모리 사용량이 증가할 수 있으므로, 대규모 서비스에서는 주의가 필요

사용시점:

1. 보안이 중요한 데이터를 관리해야 할 때

ex) 로그인 인증, 사용자 계정 정보, 결제 정보

2. 서버에서 사용자의 상태를 추적해야할 때.

ex) 로그인 상태 유지, 개인화된 사용자 경험 제공

3. 데이터를 서버에 저장해야 하며, 클라이언트가 직접 데이터에 접근하면 안 될 때.

 

보안에 취약한 쿠키의 단점을 보완

비밀번호 , 카드번호 등 중요한 정보는 서버측에서 관리

세션 인증방식

 

  1. 사용자가 로그인 요청
  2. 서버에서 계정 정보를 읽어 사용자를 확인(인증), 사용자의 고유한 ID를 부여해서 세션 저장소에 저장한 후, 이와 연결된 세션 ID를 발급(인가)
  3. 사용자는 서버에서 해당 세션ID를 받아 쿠키에 저장한 뒤, 인증이 필요한 요청마다 쿠키를 헤더에 보냄
  4. 서버는 쿠키를 받아 세션 저장소에서 대응되는 정보를 가져옴
  5. 인증 완료 후 서버에서 사용자에게 맞는 데이터를 보냄

세션 인증방식의 단점

● 쿠키를 포함한 요청이 노출되도 세션ID 자체서 유의미한 개인정보를 담고있지 않으나,

탈취자가 세션ID 자체를 탈취해서 클라이언트인 척 위장할 가능성 있음.

● 서버에서 세션 저장소를 사용하므로, 요청이 많아지면 서버 과부하가 걸림

세션 코드 찍먹 예시

결론

쿠키는 단순 데이터에 사용

세션은 보안이 중요한 데이터에 사용

실무에서는 종종 두 개를 함께 사용해서 유연하게 상태를 관리

예를 들자면, 쿠키로 세션ID를 저장하고, 서버에서 해당 ID를 사용해 세션을 관리

 

참고자료:

https://velog.io/@1117mg/Java-%EC%84%B8%EC%85%98-%EC%A0%84%EC%86%A1-%EB%B0%A9%EC%8B%9DCookieSessionJWT

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함