쿠키와 세션은 HTTP 프로토콜의 약점을 보완하기 위해서 사용된다.
HTTP 프로토콜은 요청에 대한 응답이 완료되면 연결이 끊어지기 때문에 상태의 정보가 유지되지 않는다.
고속도로에서 하이패스를 이용해봤다면 얘기가 조금 쉽다.
하이패스 카드가 있으면 알아서 인식하고 결제가 되므로 별도의 동작 없이 지나가면 되지만
없으면 멈춰서 지갑을 꺼내 맞는 금액을 직접 지불해야하는 동작이 필요하다.
HTTP 요청은 후자를 말한다. 톨게이트를 만날 때마다 멈춰서 일련의 동작을 해야한다.
쿠키와 세션은 하이패스 카드와 비슷하다. 뺏기면 안되기 때문에 보안 또한 더욱 중요하다.
쿠키(Cookie)
- 쿠키는 클라이언트에 저장되며 키와 값이 들어있는 작은 데이터 파일
- 유효 기간을 명시할 수 있으며, 유효 기간 내에서는 사용이 가능하다.
- 상태 정보를 로컬에 저장하고 참조한다.
- HTTP 요청 시 헤더에 포함해서 서버로 전송할 수 있다.
쿠키 사용의 대표 예
- 사용자 인증 및 권한 관리
- 장바구니 기능
- 자동 로그인 등 사용자 설정 저장
- 광고 타겟팅
쿠키의 발급 과정
- 클라이언트에서 HTTP 요청
- 서버에서 쿠키를 생성해서 클라이언트에 반환
- 이후 HTTP 요청 시 헤더에 쿠키를 담아 요청
- 서버에서 쿠키를 검증하고 알맞은 응답을 반환
- 쿠키의 갱신이나 정보 변경이 필요한 경우 서버에서 변경 후 반환
세션(Session)
- 세션은 서버에 저장되며 쿠키에 비해 큰 용량을 저장할 수 있다.
- 브라우저를 닫거나 세션ID가 삭제되면 세션은 종료되며 데이터가 삭제된다. 유효 기간 설정도 가능.
- 상태 정보를 서버 메모리, 데이터베이스 또는 파일 시스템에 저장한다.
- 사용자의 정보를 서버에 두기 때문에 쿠키보다 보안이 좋지만, 사용량이 많을 경우 서버에 무리가 감.
세션 사용의 대표 예
- 사용자 인증 및 권한 관리
- 장바구니 기능
- 웹 폼의 데이터 유지 등
세션의 발급 과정
- 클라이언트가 서버에 최초 요청을 보낸다.
- 서버는 클라이언트에게 고유 세션 ID를 발급하며 쿠키로 전송한다.
- 이후의 모든 클라이언트의 요청에 세션 ID를 포함한다.
- 서버는 세션 ID와 세션의 상태를 체크해 데이터를 관리한다.
쿠키와 세션의 차이점
- 쿠키와 세션은 동작 원리와 발급 과정 모두 비슷하지만, 저장되는 장소가 어딘지에 큰 차이가 있으며 용량의 차이도 있다.
- 보안 면에서는 세션이 쿠키보다 우수하지만 요청 속도는 쿠키가 세션보다 우수하다.
- 쿠키와 세션 모두 만료 시간을 정의할 수 있지만, 세션은 쿠키와 달리 브라우저가 종료되면 삭제된다.
'개념정리' 카테고리의 다른 글
attribute와 property의 차이 (0) | 2023.10.31 |
---|---|
CSR과 SSR의 차이점과 특징 (0) | 2023.10.31 |
CORS? Cross-Origin-Resource-Sharing에 대해 (0) | 2023.10.31 |
브라우저의 동작 원리 (0) | 2023.10.31 |