네트워크 - Cookie, Session

진경천·2024년 12월 2일

🍪쿠키란?

서버에서 사용자 브라우저로 전송하는 Key-Value 형태의 작은 데이터 조각을 의미

사용자의 웹 브라우저에 저장되기 때문에 HTTP의 비연결성과 상태없음을 보완한다.

주로 세션 관리, 개인 설정 유지, 사용자 트래킹 용도로 사용된다.

특징

  • Key-Value 형태의 데이터
  • 클라이언트 로컬에 저장
  • 로컬 저장으로 인한 변조 가능성 존재
  • 유효 기간 설정 가능
    • 유효 기간 중에는 브라우저 종료 후에도 유지
  • 최대 용량은 4KB로 최대 300개 까지 저장 가능

동작 방식

  1. 클라이언트 요청
  2. 서버에서 쿠키 생성 및 전달
  3. 클라이너트에서 쿠키 저장
  4. 클라이언트에서 쿠키를 담아서 응답
  5. 서버에서 쿠키를 통해 사용자 인증 및 세션 관리

문제점

  • 클라이언트 저장 위치 문제
    • 쿠키 하이재킹 위험 존재
  • 보안 취약성
    • XSS 공격으로 인한 쿠키 탈취 위험 존재
    • 쿠키가 자동으로 요청에 포함되기 때문에 CSRF 공격 위험이 존재함
  • 성능 문제
    • 쿠키의 크기제한 존재
    • 모든 요청에 쿠키가 포함되어 트래픽 증가

세션이란?

클라이언트와 서버가 통신을 위해 서로 연결된 순간부터 통신을 마칠 때 까지의 기간을 의미한다.

세션을 지칭할 때는 서버에 저장된 클라이언트 세션에 대한 정보를 지칭하는 경우가 많다.

쿠키와 같이 HTTP의 상태없음을 극복하고 사용자의 상태를 관리하기 위해 사용된다.

특징

  • 서버에 정보 저장(세션 쿠키)
  • 용량에 제한이 없음
  • 서버에 세션객체가 생성되며 각 클라이언트마다 고유한 세션ID값을 부여

문제점

  • 다중 서버에서 세션 불일치 문제
    • 서버 분산 환경에서 세션 데이터가 서버 간 일치하지 않아 인증 물제가 발생할 수 있다.
  • RAM 사용으로 인한 서버 메모리 부족
  • 세션 탈취
    • 사용자의 세션ID를 탈취하여 권한을 도용할 수 있는 위험 존재
  • 세션 고정
    • 사용자가 미리 설정한 세션ID에 로그인하게 유도하여 인증 정보를 탈취할 수 다.
  • CSRF 공격 위험 존재

비교

쿠키 (Cookie)세션 (Session)
설명클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일서버에서 일정시간 동안 클라이언트 상태를 유지하기 위해 사용
저장위치클라이언트 (웹 브라우져)웹 서버
사용예사이트 팝업의 "오늘 다시보지 않기" 정보 저장로그인 정보 저장
만료시점쿠키 저장 시 만료일시 설정 가능 (브라우져 종료시도 유지 가능)다음 조건 중 하나가 만족될 경우 만료됨
1. 브라우져 종료 시까지
2. 클라이언트 로그아웃시까지
3. 서버에 설정한 유지기간까지 해당 클라이언트의 재요청이 없는 경우
용량제한브라우져 별로 다름 (크롬 기준) - 하나의 도메인당 180개 - 하나의 쿠키 당 4KB(=4096byte)개수 제한 없음 (단, 세션 저장소 크기 이상 저장 불가능)
보안취약 (클라이언트에서 쿠키 정보를 쉽게 변경, 삭제 및 가로채기 당할 수 있음)비교적 안전 (서버에 저장되기 때문에 상대적으로 안전)
profile
어중이떠중이

0개의 댓글