- 클라이언트는 쿠키를 통해 세션 식별자를 저장
- 서버는 세션을 통해 사용자의 상태나 인증 정보를 더 안전하게 관리
- 클라이언트가 방문한 웹사이트에서 서버를 통해 클라이언트의 로컬 브라우저에 저장되는 데이터
- Key-Value 형식의 쌍으로 구성된 문자열
- 세션 식별, 사용자 설정, 트래킹 등
- 각 사용자마다 브라우저에 고유 정보를 저장해두고 사용자를 식별
- 만료 날짜를 가지고 있어 특정 기간 동안 유지되었다가, 만료 날짜가 지나면 브라우저에서 자동으로 삭제
- 만료 시점:
expires
나max-age
속성으로 설정- 만료 시점을 설정하지 않으면 기본적으로 브라우저가 종료될 때 삭제
- 특정 도메인과 경로를 제한하여 쿠키를 사용할 수 있는 페이지를 제어
- 요청한 도메인의 경로와 쿠키의
Domain
속성이 일치하지 않으면 쿠키에 접근 방지Domain
속성을 입력하지 않으면 현재 도메인의 경로로 자동 설정
- 일반적으로 도메인 하나당 20개의 쿠키 저장 가능
- 쿠키 당 최대 저장 용량: 4KB로 제한
- 클라이언트가 요청을 보낼 때마다 요청 헤더에 보내지므로 쿠키의 사이즈가 커질수록 네트워크 부하 유발
- 요청 시 그대로 보내져 유출 및 조작의 위험으로 보안에 취약
- 서버에서 클라이언트 상태를 저장하기 위한 객체
- 쿠키의 보안 문제로 쿠키에는 클라이언트를 식별할 수 있는 고유 식별자(Session ID)만 저장
- 사용자의 민감한 인증 정보는 서버 측에 저장 (ex. 비밀번호)
- 클라이언트 고유 식별자를 Key로, 해당 클라이언트에 대한 정보를 Value로 구성되는 객체 형태로 저장
- 클라이언트 정보 Map 형태로 구성 (ex. 세션 생성 시간, 마지막 접근 시간, 사용자 정보 등)
- 서버에 중요 정보 안전하게 저장: 세션 정보는 서버에 저장, 클라이언트에는 세션 식별자만 저장
- 클라이언트의 Session ID를 탈취하여 요청할 수 있어 서버에서 IP를 제한하여 보안 강화 필요
- 세션은 일정 기간 동안 유지
- 클라이언트의 활동이 없을 때 서버 측에서 세션 정보 만료
- 서버 측에서 관리하므로 일반적으로 쿠키보다 더 많은 데이터를 저장 가능
- 사용자가 웹사이트에 로그인
- 서버는 해당 사용자에 대한 새로운 세션을 생성, 고유한 식별자를 클라이언트에게 제공
- 세션은 서버의 메모리, 로컬 파일, 데이터베이스 등 원하는 위치에 저장
- 서버는 고유 식별자(Session ID)를 Response Header의
Set-Cookie
로 설정
- 이후 해당 클라이언트는 요청을 보낼 때마다 매번 저장된 쿠키를 Request Header의
Cookie
로 전달 - 인증: 서버는 쿠키에 담긴 정보를 바탕으로 클라이언트를 식별하여 세션을 이용하여 인증 수행
- 서버에서 세션 정보를 관리하고 조회해야 하기 때문에 많은 오버헤드가 발생
- 클라이언트 상태를 서버 측에 저장하여 계속해서 유지해놓고 사용 필요 (ex. 사용자의 인증 정보 등)
- 단점: 사용자가 증가하여 요청이 많아지면 세션 정보 저장 시 서버 부하로 인한 성능 문제, 낮은 확장성
- 해결 방안: 세션 기반 인증 방식의 단점을 극복하기 위한 토큰 기반 인증 방식 등장
- 쿠키와 세션의 차이점을 설명해주세요.
- 세션이 보안이 좋은데도 쿠키를 사용하는 이유가 무엇인가요?
- 쿠키의 사용 예시를 말씀해주세요.
- 쿠키와 세션을 이용한 인증 방식을 설명해주세요.