그냥 블로그^_~
Cookie와 Session 본문
Cookie와 Session
쿠키와 세션이 필요한 이유
- HTTP 프로토콜의 특징이자 약점을 보완하기 위해서
- connectionless
- 요청 후 응답 받으면 연결 끊어버림
- stateless
- 연결을 끊기 때문에 client의 상태가 유지되지 않음
- 로그인 정보, 장바구니 정보 등 특정 유저마다의 상태 유지가 필요할 때 쿠키와 세션 사용
- connectionless
쿠키와 세션의 공통점과 차이점
쿠키 | 세션 | |
저장 위치 | 클라이언트 | 서버 |
저장 데이터 타입 | 텍스트 | 객체 |
저장 데이터 크기 | 쿠키 하나당 4KB (도메인마다 20개까지) | 제한X(서버에서 가능한 메모리 크기만큼) |
Cookie 특징
- 클라이언트 쪽에 저장 (파일 형태)
- key, value 형태
- 사용자도 접근, 수정, 삭제 가능
- 세션에 비해 상대적으로 보안성 낮음 → critical한 정보 저장 X
- 도메인당 20개 저장 가능, 하나의 쿠키 4kb까지 저장 가능
- 쿠키 구성 요소
- 이름 : 쿠키 식별자
- 값
- 유효기간 : 쿠키 지속 시간
- 도메인 : 쿠키를 전송할 도메인
- 브라우저마다 저장되는 쿠키는 다르다
- 서버에서는 브라우저가 다르면 다른 사용자로 인식
Cookie 동작 방식
- 클라이언트가 페이지 요청
- 서버에서 쿠키를 생성
- HTTP 헤더에 쿠키를 포함시켜 응답
- 클라이언트는 응답과 함께 쿠키를 저장
- 같은 서버에 요청을 보낼 때 저장해놨던 쿠키를 함께 보냄
- 서버에서 쿠키를 읽어서 사용자 상태 정보 확인 및 업데이트 사항 있으면 업데이트 해서 HTTP헤더에 포함시켜 응답
Session 특징
- 서버에 저장 (객체 형태)
- 세션은 쿠키를 기반으로 사용
- 세션 ID가 쿠키에 저장되기 때문
- 서버쪽에서 관리되기 때문에 쿠키보다 상대적으로 보안성 높음
- 크기에 제한 X
- 너무 큰 데이터나 많은 데이터를 저장 시 서버 메모리에 영향