쿠키와 세션을 사용하는 이유는 Http의 속성 때문입니다.
HTTP는 Connectionless와 Stateless의 속성을 가지고 있는데, Connectionless는 클라이언트가 서버에 요청하면 응답 후 연결을 끊는 속성이고, Stateless는 연결이 끊어진 후 상태 정보를 유지하지 않는 속성입니다.
쿠키와 세션은 이러한 기능을 처리하는 데 사용됩니다.
쿠키
- 쿠키는 클라이언트(브라우저)에 로컬로 저장되는 키와 값을 포함하는 작은 데이터 파일입니다.
- http에서 정보가 필요할 때 재사용할 수 있습니다.
- 사용자 인증 유효시간을 지정할 수 있으며, 유효시간을 설정하면 브라우저를 닫아도 인증이 유지됩니다.
- 최대 300개의 쿠키를 클라이언트에 저장할 수 있으며 각 도메인은 20개의 값만 가질 수 있습니다.
- 쿠키 값은 최대 4KB를 저장합니다.
- 쿠키는 이용자가 별도로 요청하지 않아도 요청 시 요청 헤더를 삽입하여 브라우저가 자동으로 서버에 전송합니다.
- 쿠키 작동 방식
- 클라이언트가 페이지를 요청합니다.
- 서버에 쿠키 생성
- HTTP 헤더에 쿠키를 포함하여 응답
- 브라우저가 닫혀 있어도 쿠키에 만료 날짜가 있으면 클라이언트는 만료 날짜를 유지합니다.
- 동일한 요청에 대해 쿠키는 HTTP 헤더와 함께 전송됩니다.
- 서버가 쿠키를 읽고 이전 상태 정보를 변경해야 하는 경우 쿠키를 업데이트하고 변경된 쿠키를 HTTP 헤더에 포함하여 응답합니다.
- 쿠키의 예
- 방문하고 있는 웹사이트에 로그인하면 “아이디와 비밀번호를 저장하시겠습니까?”라고 나옵니다.
- 장바구니 기능
- 자동 로그인 시 팝업창에서 “오늘 이 창을 다시 보지 않음” 체크
회의
- 세션은 웹 브라우저를 시작할 때부터 닫을 때까지 상태를 유지합니다.
- 세션도 쿠키를 기반으로 하지만 쿠키와 달리 사용자 정보 파일은 서버에서 관리합니다.
- 서버는 클라이언트를 식별하기 위해 세션 ID를 할당하고 웹 브라우저가 서버에 연결하고 브라우저를 닫을 때까지 인증을 유지합니다.
- 일정 시간 동안 회신이 없으면 정보가 유지되지 않도록 액세스 시간을 제한할 수 있습니다.
- 사용자에 대한 정보는 서버에 저장되기 때문에 서버 메모리를 많이 차지한다.
- 가장 큰 차이점은 위치와 서버 사용 여부입니다. 쿠키는 클라이언트에 로컬로 저장되고 사용되지만 세션은 서버 리소스를 사용합니다.
- 세션 작동 방식
- 클라이언트가 서버에 연결하면 세션 ID가 반환됩니다.
- 클라이언트는 쿠키를 사용하여 세션 ID를 저장하고 보유합니다.
- 클라이언트가 서버에 요청을 하면 해당 쿠키의 세션 ID를 서버에 보내고 요청합니다.
- 서버는 세션 ID를 수신하고 세션 ID를 사용하여 특별한 작업 없이 세션에서 클라이언트 정보를 검색합니다.
- 각 클라이언트에게 고유 ID 부여
- 세션 ID를 이용하여 클라이언트를 식별하고 클라이언트의 니즈에 맞는 서비스를 제공합니다.
- 보안을 위해 쿠키보다 낫습니다.
세션은 보안상 쿠키보다 높지만 서버 자원을 차지하기 때문에 무차별적으로 사용할 수는 없습니다.
중요한 차이점은 수명 주기 세션은 웹 브라우저를 닫으면 종료되지만 만료 날짜와 데이터 파일이 있는 한 브라우저를 닫은 후에도 쿠키는 유지됩니다.
쿠키는 세션보다 빠릅니다.
(참조)
쿠키 및 세션 개념
약관 페이지(아래와 동일) 개요 쿠키와 세션은 개발자뿐만 아니라 인터넷의 모든 사람들이 많이 들어본 용어입니다. 그러나 많은 사람들이 개념에 대해 혼란스러워하므로 간단하고 정의하기 쉽습니다.
interconnection.history.com
