CS/네트워크

[네트워크] 쿠키와 세션

ari0930 2025. 3. 23. 20:53

쿠키와 세션을 사용하는 이유

  • HTTP의 가장 큰 특징인 무상태성과 비연결성이다.
  • HTTP의 통신 결과에대해서 이전 통신 상태가 남아있지 않게 된다.
  • 이전 통신 결과가 남아있지 않기 때문에 자원이 낭비되며 이를 해결 하기 위해 쿠키가 등장하였다.

 

비연결성이란? 

- 클라이언트가 요청을 한 후 응답을 받으며 그 연결을 끊어버리는 특징

무상태성이란?

- 통신이 끝나면 상태를 유지하지 않는 특징

 

쿠키란?

  • 쿠키는 사용자가 웹사이트를 방문할 경우 사용자 웹 브라우저를 통해 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일
  • HTTP에서 클라이언트의 상태 정보를 PC 에 저장했다가 필요시 참조하거나 재사용할 수 있다.
  • 쿠키의 형태는 KEY 와 Value 형태로 저장된다.
  • HTTP 헤더에 요청을 보낼 때마다 매번 쿠키를 담아서 보내어 사용한다 이를 이용해서 서버는 사용자 식별에 사용

쿠키 사양

  1. 300개의 쿠키를 저장할수 있다.
  2. 하나의 도메인당 20개의 값을 가질 수 있다.
  3. 하나의 쿠키값은 4kb까지 정장 가능

단점

  • 보안에 취약하다 : 쿠키값을 브라우저에서 확인할 수 있어 유출 및 조작 당할 위업이 존재
  • 쿠키에는 용량 제한이 있어 많은 정보를 담을 수 없다.
  • 쿠키는 특정 도메인과 경로에서만 사용 가능하므로 서로 다른 도메인 간에는 공유가 어려움
  • 쿠키는 HTTP요청마다 포함되므로 크기가 커질수록 네트워크 트래픽 증가

세션이란?

  • 서버에 사용자 데이터를 저장하여 저장한 값의 ID로 불러올수있다.
  • 사용자에 대한 정보를 서버에 두기 때문에 쿠키보다 보안이 좋다.
  • 브라우저 종료시(연결이 끝내는 시점) 삭제 된다.

. 세션이 삭제되는 과정

  • 사용자가 웹사이트에 로그인하면, 서버(Sprint Boot 등)가 세션을 생성하고, 세션 ID를 브라우저의 세션 쿠키(Session Cookie)에 저장.
  • 사용자가 웹사이트를 이용하는 동안, 브라우저는 이 세션 ID를 서버로 계속 전송해서 인증된 상태를 유지.
  • 브라우저를 종료하면 세션 쿠키도 삭제되므로, 세션 ID를 사용할 수 없게 됨.
  • 다음에 다시 방문하면 새로운 세션이 생성

단점

  • 사용자가 많아질수록 서버 메모리를 많이 차지하게 된다,
  • 동접자수가 늘어나면 성능 저하를 일으킨다.
  • 여러 대의 서버를 사용할 경우 특정 서버에 저장된 세션을 인식하지 못한다 (이를 해결 하기 위해 Redis 사용)
  • 데이터 영속석 부족
    • 브라우저를 닫거나 일정 시간이 지나면 세션이 사라져 다시 로그인해야 하는 불편함이 있음.
    • 해결 방법: "Remember Me" 기능을 추가하거나, JWT를 활용하여 인증 유지.

 

쿠키와 세션의 차이점

  • 쿠키와 세션은 서로 비슷한데 그 이유는 세션도 쿠기를 사용하기 때문이다.
  1. 저장위치
    1. 쿠키 : 클라이언트
    2. 세션 : 서버
  2. 보안
    1. 세션이 쿠키보다 우수하다
    2. 쿠키의 경우 사용자의 로컬에 저장되기에 탈취당하거나 위조 당할수 있다.
    3. 세션은 쿠키를 이용해서 세션 id만 저장하고 서버에서 확인하기에 비교적 보안성이 좋다
  3. 요청속도
    1. 세션은 서버에서 처리가 필요하기에 쿠키가 세션보다 빠르다.
  4. 라이플 사이클
    1. 쿠키는 파일로 저장되기에 브라우저 종료해도 정보 유지가 될 수 있다.
    2. 세션은 브라우저가 종료되면 만료기간에 상관없이 삭제된다.

+) 캐시는?

  • 캐시(Cache)는 자주 사용하는 데이터를 임시 저장하여 빠르게 불러올 수 있도록 도와주는 저장소
  • 웹 성능을 향상시키기 위해 웹 페이지 요소(HTML, CSS, JS, 이미지 등)를 저장하여 빠르게 로딩할 수 있다.
반응형