쿠키는 왜 필요할까?
HTTP는 Stateless 방식을 채택하고 있다. Stateless는 서버와 클라이언트 간의 관계에서 서버가 클라이언트의 상태를 보존하지 않음을 뜻한다. 이럼으로써 많은 이점이 생기지만 상태 보존이 꼭 필요한 경우가 있다. 예를 들어 쇼핑몰 어플리케이션의 경우 로그인 유지, 자동 로그인, 맞춤형 상품 추천, 장바구니 기능 등에서 필요하다. (여기서 상태란 클라이언트 별로 일시적으로 유지해야 하는 정보를 뜻한다.)
이를 위해 HTTP는 쿠키 기능을 제공하고 있으며 관련 헤더로 set-cookie(응답 헤더), Cookie(요청 헤더)를 제공한다.
쿠키
쿠키는 상태 정보가 기록된 작은 파일이다. 쿠키의 원리는 아주 단순한데 한마디로 요청마다 모든 상태 정보를 포함한 쿠키를 넣어 요청한다. 이러한 단순함으로 쿠키는 HTTP의 Stateless 특성을 살리면서도 상태 보존을 할 수 있게 만든다.
쿠키 동작 순서
쿠키 구성 요소
쿠키는 이름(Key), 값(Value), 도메인, 생명주기, 경로, 보안 정보를 담고 있다.
예) set-cookie: sessionId=abcde1234; expires=Sat, 26-Dec-2020 00:00:00 GMT; path=/; domain=.google; Secure
- Key(이름) : 쿠키의 키
- value(값) : 쿠키의 값
- 유효시간 : 쿠키의 유지시간
- 도메인 : 쿠키를 전송할 도메인
- 경로 : 쿠키를 전송할 요청 경로
쿠키 특징
- 클라이언트에 총 300개의 쿠키를 저장할 수 있다.
- 하나의 도메인 당 20개의 쿠키를 가질 수 있다.
- 하나의 쿠키는 4KB까지 저장 가능하다.
쿠키 단점
쿠키는 보안에 취약하기에 비밀번호, 주소 등 중요한 정보를 담아서는 안된다.
- 보안에 취약하다 (쿠키는 유실, 변조, 탈취될 위험이 있다.)
- 쿠키의 사이즈가 커질수록 네트워크 부하가 심해진다.
- 브라우저 마다 쿠키에 대한 지원 형태가 다르기에 브라우저간 공유가 불가능하다.
세션
쿠키는 보안에 취약하기에 중요한 정보를 담아서는 안된다. 보존해야할 상태가 중요한 정보라면 클라이언트에 저장하는 것보다 서버측에 저장하는 것이 좋다. 서버 측에 클라이언트 상태를 보존하는 것을 세션이라고 한다. 세션 방식을 채택하면 클라이언트 상태 정보는 안전해지지만 HTTP의 stateless 특성을 유지할 수 없게 된다.
세션 동작 순서
세션의 특징/장점
- 서버에 상태 정보를 저장하기에 안전하다.
- 각 클라이언트마다 고유 세션 ID를 부여한다.
세션의 단점
- HTTP의 Stateless 특성을 유지할 수 없다.
- 서버의 리소스가 낭비된다.
'WEB > HTTP' 카테고리의 다른 글
HTTP 캐시 (0) | 2023.03.14 |
---|---|
HTTP 일반 헤더 (0) | 2023.03.13 |
HTTP 상태 코드 (0) | 2023.03.13 |
HTTP 메서드 활용 (0) | 2023.03.13 |
HTTP 메서드 (0) | 2023.03.09 |