Cookie VS Session

한강섭·2025년 3월 29일
0
post-thumbnail

쿠키, 세션 왜 있는 걸까?


HTTP 프로토콜의 약점을 보완하기 위해서 사용된다!

HTTP(Hypertext Transfer Protocol)는 웹에서 데이터를 주고받는 서버-클라이언트 모델의 프로토콜, 쉽게 설명하자면 웹 브라우저가 서버와 통신하는 규칙


HTTP 프로토콜의 약점

  1. Connectionless 프로토콜 (비연결지향)   

클라이언트가 서버에 요청(Request)을 했을 때, 그 요청에 맞는 응답(Response)을 보낸 후 연결을 끊는 처리방식이다.       

  1. Stateless 프로토콜 (상태정보 유지 안함)   

클라이언트의 상태 정보를 가지지 않는 서버 처리 방식이다. 
클라이언트와 첫번째 통신에서 데이터를 주고 받았다 해도, 두번째 통신에서 이전 데이터를 유지하지 않는다.


정보가 유지되지 않으면, 매번 페이지를 이동할 때마다 로그인을 다시 하거나,상품을 선택했는데 구매 페이지에서 선택한 상품의 정보가 없거나 하는 등의 일이 발생할 수 있다.
→ 따라서, Stateful 경우를 대처하기 위해 쿠키와 세션을 사용한다.


그렇다면 쿠키와 세션이란?


정의


쿠키

웹 서버에서 정보를 생성해서 클라이언트(웹 브라우저)에 보관하는 데이터

웹 사이트를 방문할 때마다 컴퓨터에 작은 임시 파일들이 생기는 것이 쿠키를 먹을 때 부스러기가 생기는 것과 비슷해 쿠키라는 이름이 지어졌다고 한다.


세션

방문자가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라고 한다

세션이 동작하기 위해서는 JSESSIONID라는 이름의 쿠키 필요 (서버의 세션 공간에 들어가기 위한 키!


특성


쿠키

name을 제외한 property는 setter/getter로 접근 가능
name은 쿠키의 이름으로 쿠키를 구별할 수 있는 유일한 값

Cookie cookie = new Cookie("username", "hong_gil_dong");
Cookie cookie = new Cookie("status-path", URLEncoder.encode("status 경로에 저장된 쿠키", "UTF-8"));

path : 쿠키가 유효한 경로 path가 설정된 하위 경로에서만 쿠키 전송
경로 미 설정 시 context root 설정된다 주의!

maxAge: 양수 (시간 만큼 유지), 음수 (세션 종료 시), 0 (브라우저에 도착할 시)


세션

  1. 각 클라이언트에게 고유 ID를 부여
  2. 세션 ID로 클라이언트를 구분해서 클라이언트의 요구에 맞는 서비스를 제공
  3. 보안 면에서 쿠키보다 우수
  4. 사용자가 많아질수록 서버 메모리를 많이 차지하게 됨

주요 메서드

Object getAttribute(String name) // String으로 저장된 세션 속성 가져오기 
void setAttribute(String name, Object value) // 세션 속성 설정
void removeAttribute(String name) // name에 해당하는 세션 속성 제거

void invalidate() // 세션 무효화, logout 처리
String detId() // 세션 ID 가져오기 

long getCreationTime() // 세션 생성 시각
long getLastAccessedTime() // 세션 마지막 접근 시각
int getMaxInactiveInterval() // 최대 세션 유효 기간 
void setMaxInactiveInterval(int interval) // 최대 세션 유효 기간 설정(초 단위)

그렇다면 차이점만 골라본다면?

  1. 쿠키는 서버의 자원을 전혀 사용하지 않지만, 세션은 서버의 자원을 사용한다.

  2. 보안 면에서 세션이 더 우수하지만 요청 속도는 쿠키가 더 빠르다

  3. 쿠키도 만료 시간이 있지만 파일로 저장되기 때문에 브라우저를 종료해도 계속해서 정보가 남아있을 수 있지만, 세션은 브라우저 종료 시 삭제된다.


정리

쿠키와 세션은 모두 웹 통신 시 정보를 저장해두어 빠르고 편리하게 사용하기 위해 사용된다. 각각의 특성에 맞게 잘 활용해서 사용자의 편의성을 극대화 시킬 수 있다.


참고 자료

쿠키와 세션 개념
쿠키(Cookie)와 세션(Session)의 차이 (+캐시(Cache))
출처: https://dev-coco.tistory.com/61 [슬기로운 개발생활:티스토리]

쿠키(Cookie), 세션(Session) 특징 및 차이
출처: https://hahahoho5915.tistory.com/32 [넌 잘하고 있어:티스토리]

profile
기록하고 공유하는 개발자

0개의 댓글