쿠키 vs 세션

임수정·2023년 8월 21일
0

인증&인가(토큰)

목록 보기
1/3
post-thumbnail

HTTP 프로토콜은 기본적으로 클라이언트와 서버 간의 각 요청이 독립적으로 처리되며 이전 요청과의 상태를 유지하지 않습니다. 이로 인해 사용자의 로그인 상태나 다른 데이터를 계속해서 전송해야 하는 번거로움이 발생할 수 있습니다. 쿠키와 세션은 이런 상황에서 발생하는 문제를 해결하기 위해 사용됩니다.

쿠키

쿠키는 클라이언트(사용자의 브라우저)에 저장되는 작은 데이터 조각입니다.

서버는 클라이언트에게 쿠키를 전달하고, 클라이언트는 이 쿠키를 저장하여 나중에 같은 사이트에 접속할 때 해당 정보를 함께 전송합니다. 쿠키는 주로 사용자의 로그인 정보, 선호하는 설정, 장바구니 내용 등을 저장하는 데 사용됩니다.

특징

  1. 쿠키는 클라이언트 측에서 저장되기 때문에 상대적으로 빠르게 접근 가능합니다.
  2. 쿠키는 만료 기간을 설정할 수 있으며, 지정된 만료일 이후에는 삭제됩니다.
  3. 각 쿠키는 이름, 값, 도메인 등의 속성을 가지고 있으며 하나의 쿠키는 4KB(=4096byte)까지 저장 가능합니다.
  4. 이름()과 그에 해당하는 값(value)의 쌍으로 구성되어 데이터를 저장하고 관리합니다.
  5. 하나의 도메인 별로 20개의 쿠키를 가질 수 있고 브라우저마다 총 300개의 쿠키를 저장할 수 있습니다.

동작방식

  1. 클라이언트 요청
  2. 쿠키 전달: 서버에서 생성된 쿠키는 응답 헤더에 포함되어 클라이언트로 전송됩니다.
  3. 클라이언트 저장: 클라이언트(브라우저)는 받은 쿠키를 저장합니다. 이후 같은 도메인에 대한 요청이 있을 때마다 브라우저는 해당 쿠키를 요청 헤더에 포함시켜 서버로 전송합니다.
  4. 서버 처리: 서버는 클라이언트가 보낸 쿠키를 받아 사용자의 로그인 상태, 선호하는 설정, 장바구니 내용 등을 유지하고 활용할 수 있습니다.

사용예시

  1. 로그인 시, "아이디와 비밀번호를 저장하시겠습니까?" 메세지
  2. 장바구니 정보유지
  3. 팝업창"오늘 이 창을 다시 보지 않기" 체크

세션

웹 개발에서 사용자의 상태 정보를 서버 측에 저장하고 관리하기 위한 방법입니다.

사용자가 웹 사이트에 접속하여 로그인한 후부터 로그아웃하거나 브라우저를 닫는 시점을 말합니다.

웹 사이트에 접속하면 서버는 해당 사용자에 대한 고유한 식별자(session ID)를 생성하고 이를 클라이언트에게 전달합니다. 클라이언트는 이 식별자를 쿠키나 URL 매개변수를 통해 보내며, 서버는 이를 사용하여 사용자의 데이터를 관리하고 유지합니다.

세션ID
보통 랜덤한 문자열로 생성되며, 사용자의 브라우저에 쿠키 형태로 저장됩니다. 이 세션 ID는 클라이언트와 서버 간의 데이터 전달에 사용되며, 서버 측에서는 해당 세션 ID를 기반으로 세션 데이터를 관리합니다.

특징

  1. 세션 데이터는 서버 측에서 관리되기 때문에 쿠키보다 상대적으로 보안이 높습니다.
  2. 사용자가 웹 브라우저를 종료하거나 일정 시간 동안 활동이 없을 경우, 세션은 만료되고 데이터는 삭제될 수 있습니다.
  3. 저장 데이터에 제한이 없습니다. (서버 용량이 허용하는 한에서)

동작방식

  1. 클라이언트 접속
  2. 세션 ID 전달: 세션 ID는 주로 쿠키에 저장되어 클라이언트로 전송됩니다. 이후 클라이언트의 요청마다 세션 ID를 함께 서버로 전송합니다.
  3. 서버 확인: 서버는 받은 세션 ID를 기반으로 해당 세션에 저장된 정보를 확인하고 관리합니다. 이를 통해 사용자의 상태를 유지하고 관리합니다.
  4. 세션 데이터 저장: 서버는 클라이언트마다 고유한 세션 공간을 할당하여 세션 데이터(사용자 정보, 로그인 상태 등)를 저장합니다.
  5. 세션 만료: 일정 시간 동안 활동이 없거나 세션 만료 시간이 지나면 세션은 삭제됩니다. 사용자가 다시 접속할 때 새로운 세션 ID가 생성됩니다.

사용예시

  1. 화면을 이동해도 로그인이 풀리지 않고 로그아웃하기 전까지 유지

쿠키와 세션의 차이점

쿠키 (Cookie)세션 (Session)
저장위치클라이언트(브라우저)서버
용량일반적으로 작음세션에 비해 상대적으로 큼
보안보안에 취약 (클라이언트에서 수정 가능)상대적으로 높음 (서버에 저장되므로, 클라이언트 수정 불가능)
속성이름, 값, 도메인, 경로, 만료일 등주로 세션 ID로 식별, 사용자 정보 등 저장 가능
만료지정 가능, 브라우저 닫을 때 삭제될 수도 있음브라우저 닫을 때, 일정 시간 후 만료 가능
저장형식TextObject

쿠키,세션 그리고 캐시

캐시

  1. 웹 페이지 요소(이미지, 스타일시트, 스크립트 등)를 저장하기 위한 임시 저장소입니다.
    (쿠키,세션은 정보를 저장하기 위해 사용됩니다.)

  2. 웹 페이지 성능을 개선과 빠르게 렌더링 할 수 있도록 도와줍니다.
    (쿠키와 세션은 사용자 인증과 상태 관리에 활용되어 사용자의 보안을 강화합니다.)

[참고한 자료]

profile
부족함을 인정하고 채워나가는 개발자! (Node.js 개발자)

0개의 댓글