쿠키와 세션은 웹 애플리케이션에서 사용자 데이터를 관리하기 위한 두 가지 방법이다. HTTP 프로토콜의 특성이자 약점을 보완하기 위해 사용된다. 클라이언트와 서버 간의 상태 정보를 저장하고 추적하는데 사용하지만 차이점이 존재하기에 차이점을 살펴본다.
ㅇ HTTP 프로토콜의 특성
- connectionless
클라이언트가 요청을 한 후 응답을 받으면 그 연결을 끊어 버린다. - stateless
통신이 끝나면 상태를 유지하지 않는다.
ㅇ 쿠키
쿠키는 웹 브라우저에서 클라이언트 측에 저장되는 작은 데이터 파일이다. 서버가 클라이언트에 정보를 저장하고, 요청이 있을 때마다 이 정보를 다시 전달받아 상태를 유지하거나 추적하는데 사용한다.
주요 특징
- 저장 위치
클라이언트의 브라우저에 저장된다. - 저장 기간
쿠키는 유효 기간을 설정할 수 있다. 유효 기간을 설정하지 않으면 브라우저가 닫힐 때 삭제된다. - 보안성
사용자의 로컬 장치에 저장되므로 보안에 취약할 수 있다. - 데이터 크기 제한
쿠키는 대게 약 4kb 정도의 데이터를 저장할 수 있다. 브라우저마다 개별 도메인당 저장할 수 있는 쿠키의 수와 용량에 제한이 있다.
쿠키의 활용
- 자동 로그인
자동으로 로그인 상태를 유지하기 위해 사용 - 사용자 선호도 저장
웹사이트의 테마나 언어 설정을 기억해 다음 방문시 동일한 설정을 유지 - 트래킹
사용자의 방문 기록을 추적하여 맞춤형 광고를 제공
ㅇ 세션
세션은 사용자가 웹 사이트를 탐색하는 동안 서버 측에서 유지되는 상태 정보를 말한다. 서버에서 관리되고 사용자에게는 고유한 세션 ID가 부여되며, 이는 쿠키에 저장되거나 URL 파라미터로 전달된다.
주요 특징
- 저장 위치
세션 데이터는 서버에 저장되고, 클라이언트는 ID만 가지고 있다. - 저장 기간
세션은 브라우저를 닫으면 만료된다. - 보안성
세션은 쿠키에 비해 보안성이 높다. 클라이언트 측에 중요한 데이터가 저장되지 않고 서버에서 관리되기 때문에 민감한 정보를 안전하게 유지할 수 있다. 세션 하이재킹 공격에 대해서 방어가 필요할 수 있다. SSL암호화나 IP 주소 확인같은 조치를 사용할 수 있다. - 데이터 크기 제한
세션은 서버에 저장되므로 데이터의 크기에 제한이 거의 없다. 다만 서버 리소스를 사용하는 것을 고려해야 한다.
세션의 활용
- 로그인 정보 유지
사용자가 로그인을 하면 세션을 통해 인증 정보를 유지하고, 로그아웃 하거나 브라우저가 종료될 때 세션이 종료된다. - 장바구니 기능
구매할 상품을 장바구니에 담을 때 세션을 사용하여 정보를 유지한다.
구분 | 쿠키 | 세션 |
저장 위치 | 클라이언트 | 웹 서버 |
저장 형식 | text | Object |
만료 시점 | 유효시간 설정 가능 | 브라우저 종료 시 삭제 |
사용 자원 | 클라이언트 리소스 | 서버 리소스 |
크기 제한 | 하나 당 4kb 도메인 당 20개 총 300개 | 서버가 허용하는 한 제한없음 |
속도 | 세션보다 빠름 | 쿠키보다 느림 |
보안 | 세션보다 안좋음 | 쿠키보다 좋음 |
'Web' 카테고리의 다른 글
[Web] Web과 WAS의 차이 (0) | 2024.11.27 |
---|---|
[Web] REST API (1) | 2024.11.27 |
[Web] HTTP Status Code (0) | 2024.11.27 |
[Web] HTTP Request Method (1) | 2024.11.27 |
CS Cache(캐시) (1) | 2024.10.10 |