[네트워크] 쿠키와 세션

jh Seo·2025년 5월 30일
0

네트워크 공부

목록 보기
13/16

HTTP 프로토콜의 특징

비연결지향 : Connectionless

HTTP 프로토콜은 클라이언트에서 서버에 요청(Request)를 보내면 서버는 클라이언트에 응답을 하고 연결을 끊는 특성을 가지고 있음
-> Connectionless

상태 정보 유지 안함: Stateless

HTTP 통신은 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보를 유지하지 않는다.
-> Stateless

쿠키(Cookie)와 세션(Session)

쿠키와 세션을 사용하는 이유 :
HTTP 프로토콜의 약점을 보완

  • HTTP 프로토콜은 비연결지향상태정보 유지 안함이라는 특징을 가지고 있음.

  • 따라서 서버와 클라이언트가 통신을 할 때, 통신이 연속적으로 이어지지 않고 한 번 통신이 되면 끊어짐.

  • 통신이 끊어지면 상태 정보가 유지되지 않기 때문에 매번 페이지를 이동할 때마다 로그인을 다시 하거나, 상품 선택 후 구매 페이지에서 선택한 상품의 정보가 없거나 하는 등의 문제가 발생할 수 있다.

쿠키(Cookie)

  • HTTP의 일종으로 사용자가 어떤 웹사이트를 방문할 경우, 해당 사이트가 사용하고 있는 서버에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일
  • HTTP에서 클라이언트의 상태 정보를 쿠키 형태로 클라이언트 PC 에 저장했다가 필요할 때 정보를 참조하거나 재사용 가능

쿠키의 특징

  • Key-Value 쌍으로 이뤄져 있는 데이터 파일
  • 쿠키 이름, 쿠키 값, 만료 시간, 전송할 도메인 명, 전송 경로, 보안 연결 여부, HTTP Only여부로 구성
  • 도메인 당 20개 쿠키 가질 수 있음
  • 하나의 쿠키는 4KB(=4096B)까지 저장 가능

쿠키 작동 방식

  1. 클라이언트가 서버에 로그인 요청
  2. 서버는 클라이언트의 로그인 요청의 유효성을 확인하고 (아이디, 비밀번호 검사) 응답 헤더에 set-cookie: 를 통해 쿠키를 추가하여 응답
  3. 클라이언트는 이후 서버에 요청할 때 전달받은 쿠키를 자동으로 요청 헤더에 추가하여 요청,
    헤더에 쿠키값을 자동으로 추가해 주는 부분은 브라우저의 작업

쿠키의 기한이 정해져 있지 않고, 명시적으로 지우지 않는다면 반 영구적으로 쿠키가 남아있다.

쿠키의 사용 목적

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

쿠키 종류

  • Session Cookie: 만료 시간(Expire Date)을 설정하고 메모리에만 저장하여, 브라우저 종료시 쿠키 삭제
  • Persistant Cookie: 장기간 유지되는 쿠키, 파일로 저장되어 브라우저 종료와 관계없이 사용가능
  • Secure Cookie: HTTPS 프로토콜에서만 사용되며, 쿠키 정보가 암호화되어 전송된다.
  • Third-Party Cookie: 방문한 도메인과 다른 도메인의 쿠키다.
    일반적으로 광고 배너등 관리할 때, 유입 경로를 추적하기 위해 사용

쿠키 값 확인 및 단점

  • 브라우저 개발자 도구의 네트워크에서 쿠키 값 확인할 수 있지만, 가독성 떨어지고 수정 불가능
    -> "브라우저 쿠키 관리 탭" 혹은 "쿠키 관리 플러그인"을 설치하면 쿠키 손쉽게 수정 가능
  • 쿠키는 클라이언트에서 수정할 수 있기 때문에, 위변조의 위험이 항상 존재
    • 따라서 쿠키 값(Value)를 암호화해야하며, 민감하거나 중요한 정보를 담지 않도록 해야한다.

세션(session)

  • 일정 시간동안 같은 사용자(브라우저)로부터 들어오는 일련의 요구를 하나의 상태로 보고,
    그 상태를 유지 시키는 기술
    • 일정 시간은 방문자가 웹 브라우저를 통해 접속한 시점부터 웹 브라우저 종료해 연결 끝내는 시점을 말함.
  • 즉, 브라우저가 종료되기 전까지 클라이언트의 요청을 유지하게 해주는 기술을 세션이라고 함.

세션 특징

  • 웹 서버에 웹 컨테이너 상태를 유지하기 위한 정보 저장
  • 웹 서버에 저장되는 쿠키(세션 쿠키/ Session Cookie)이다.
  • 브라우저를 닫거나, 서버에서 세션을 삭제했을 때만 삭제가 되기 때문에 쿠키보다 비교적 보안적으로 우수.
  • 저장 데이터에 제한이 없다. (서버 용량 허용 범위 내에서)
  • 각 클라이언트에 고유 세션 ID(Session ID)를 부여한다. 세션 ID를 통해 클라이언트를 구분하여 각 요구에 맞는 서비스 제공한다.

세션 작동 방식


1. 클라이언트가 서버에 로그인 요청
2. 서버는 클라이언트의 로그인 요청의 유효성을 확인하고, unique한 id를 session ID로 생성해 저장한다.
3. 서버가 응답할 때, 응답 헤더에 세션 ID를 쿠키에 추가해 응답한다.
4. 클라이언트는 이후 서버에 요청할 때, 전달받은 세션 ID를 쿠키에 자동으로 요청헤더에 추가해 요청한다.
5. 서버에서는 요청 헤더의 세션 ID값을 세션 저장소에서 찾아보고 유효한지 확인 후 요청 처리한다.

세션 사용 목적

  • 사용자나 다른 누군가에게 노출되면 안되는 보안적으로 중요한 정보들을 서버에서 다루기 용이하다.

세션의 단점

  • 세션 내용은 서버에 저장되기 때문에 늘어나면 서버에 부하생김
  • 세션 정보가 서버에 있어 쿠키에 비해 비교적 느리다.

쿠키와 세션

저장 위치

  • 쿠키: 클라이언트의 웹 브라우저가 지정하는 메모리 or 하드 디스크
  • 세션: 서버의 메모리

만료 시점

  • 쿠키: 저장할 때 expires 속성을 정의해 무효화 시키는 방식으로 삭제될 시간 지정 가능
  • 세션: 클라이언트가 로그아웃하거나, 설정시간동안 반응이 없으면 무효화된다.
    -> 정확한 시간은 알 수 없음

리소스

  • 쿠키: 클라이언트에 저장되고, 클라이언트 메모리를 사용하기 때문에 서버 자원 사용 안 함
  • 세션: 서버에 저장되고, 서버의 메모리로 로딩되기 때문에 세션이 생길 때마다 리소스 차지

용량 제한

  • 쿠키: 클라이언트도 모르게 접속되는 사이트에 의해 설정될 수 있기 때문에, 쿠키로 인한 문제 예방을 위해 한 도메인당 20개, 한 쿠키당 4kb로 제한
  • 세션: 클라이언트가 접속하면 서버에 의해 생성되므로 개수나 용량제한 없음

세션과 쿠키를 모두 사용하는 이유

세션이 쿠키에 비해 보안이 높은 편이나 둘 다 사용하는 이유

  • 세션은 서버에 저장되고, 서버의 자원을 사용하기 때문에 서버자원을 차지하게 되고 속도가 느려질 수 있기 때문이다.
  • 따라서 쿠키와 세션을 적절한 요소 및 기능에 병행 사용하면 서버 자원 낭비 방지해 웹사이트 속도 개선에
profile
코딩 창고!

0개의 댓글