CS

TIL | 쿠키 & 세션 정리

쿠키

HTTP 쿠키?

  • HTTP는 ConnectionlessStateless이므로 서버의 자원 낭비를 줄일수 있다는 장점이 있지만, 상태 정보를 기억하지 못하는 단점을 보완하고자 쿠키 및 세션이라는 기술을 활용한다.
  • key, value 형태로 구성된 문자열 형태로 이루어진 데이터이며, 주로 다음과 같은 목적을 위해 사용한다.
    1. 세션 관리: 서버에 저장해야 할 로그인, 장바구니, 게임 스코어등의 정보 관리
    2. 개인화: 사용자 선호, 테마 등의 세팅
    3. 트래킹: 사용자 행동을 기록하고 분석하는 용도
  • 도메인당 20개의 사용 제한이 있으며, 쿠키 하나의 용량 제한은 약 4KB이다.

쿠키 생성

  • HTTP 요청을 수신할 때, 서버는 응답과 함께 헤더의 Set-Cookie에 필요한 정보를 담아 전송한다.
  • 쿠키는 일반적으로 브라우저에 저장되고, 한번 쿠키가 생성이 된 브라우저가 같은 요청을 보낼 경우 헤더에 새성된 쿠키를 담아 요청이 이루어진다. 그리고 서버는 요청에서의 헤더에 담긴 쿠키의 정보를 바탕으로 기존 사용자를 식별하거나 상태 정보를 확인할 수 있다.
  • 쿠키는 만료일과 도메인 혹은 경로 제한을 설정할 수 있다.(선택적으로 쿠키를 전송할 수 있다.)

Secure과 HttpOnly 쿠키

  • Secure: Secure 쿠키는 HTTPS상에서 암호화된 요청일 경우에만 전송된다.(아무리 secure 키워드를 통해 생성한 쿠키일지라도 민감한 정보는 저장되어서는 안된다.)
  • HttpOnly: HttpOnly 쿠키는 XSS같은 스크립팅 공격을 방지하기 위해 브라우저에서 Document.cookie를 통한 쿠키 접근을 막는데 사용된다.

XSS(Cross Site Scription): 공격자가 공격하려는 사이트에 스크립트를 넣어, 상대방이 의도치 않은 동작을 수행하도록 하는 기법이다. (쿠키 및 세션 ID 탈취, 시스템 관리자 권한 획득, 악성코드 다운로드, 거짓 페이지 노출 등의 공격이 존재한다.)


세션

세션?

  • 클라이언트의 상태 정보를 서버에서 관리하기 위해 서버 메모리에 저장하는 기술이다.
  • Object 형태로 저장된다.
  • 사용자 정보 등 민감한 정보를 관리할 때 주로 사용된다.
  • 브라우저당 하나의 세션이 생성되며, 기본적으로 브라우저 종료시 삭제된다.

쿠키와 세션의 동작 메커니즘

  1. 서버에서는 클라이언트(브라우저)의 구분을 위해 생성한 세션마다 각각의 세선 ID를 부여하며, 세선 ID는 쿠키에 담겨 클라이언트에게 전송된다.
  2. 클라이언트는 서버로부터 응답과 함께 쿠키를 받고 이를 브라우저에 저장한다.
  3. 클라이언트가 동일한 서버에 요청을 보낼 시 헤더에 쿠키가 담겨 요청이 이루어지며, 서버는 쿠키를 받아 세션 ID를 확인하고 주어진 세션 ID에 해당하는 세션의 클라이언트 정보를 찾아 처리 후 응답을 하게 된다.

쿠키, 세션 특징 비교

  쿠키 세션
저장 위치 브라우저 서버
저장 형식 text Object
리소스 클라이언트 리소스 서버의 리소스
용량 제한 도메인당 20개,1개당 4KB 제한 없음
만료 시점 쿠키 저장시 설정 알수 없음(기본적으로 브라우저 종료시 삭제)

Reference

'CS' 카테고리의 다른 글

캐싱 정리  (0) 2023.08.06
TIL | 브라우저에 url 입력 후 콘텐츠 렌더링까지의 프로세스  (0) 2022.07.23