안녕하세요!
항상 나아가는 개발자 pink_salt 핑솔입니다!
오늘은 웹 쿠키와 세션 개념 및 활용 예시에 대해 알아보겠습니다.
쿠키(cookie)?
HTTP 쿠키(웹 쿠키, 브라우저 쿠키)는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각이다.
브라우저는 그 데이터 조각들을 저장해 놓았다가, 동일한 서버에 재 요청 시 저장된 데이터를 함께 전송한다.
언제 사용하나요?
쿠키는 두 요청이 동일한 브라우저에서 들어왔는지 아닌지를 판단할 때 주로 사용한다.
상태가 없는 HTTP 프로토콜에서 상태 정보를 기억할 수 있어 이를 통해 사용자의 로그인 상태를 유지할 수 있다.
쿠키는 웹 사이트에 접속하면 생성되는 정보를 담은 임시 파일입니다.
쿠키의 데이터 형태는 Key , Value로 구성되어 있고 String 입니다.
쿠키는 사이트 정보, 개인 정보가 기록되어서 사생활 침해 가능성으로 인해 쿠키에 대한 거부가 가능합니다.
그리고 서버가 가지고 있는 것이 아니고 사용자에게 저장되어서 보안에 취약합니다.
세션은 보안에 취약한 쿠키를 보완해주는 역할을 합니다.
세션(session)?
세션이란 웹사이트의 여러 페이지에 걸쳐 사용되는 사용자 정보를 저장하는 방법을 의미합니다.
사용자가 브라우저를 닫아 서버와의 연결을 끝내는 시점까지를 세션이라고 합니다.
쿠키는 클라이언트 측의 컴퓨터에 모든 데이터를 저장하는데 세션은 서비스가 돌아가는 서버 측에 데이터를 저장하고, 세션의 키 값만을 클라이언트 측에 남겨 둡니다.
사용자나 다른 누군가에게 노출되면 안되는 정보들은 세션으로 서비스 제공자가 직접 관리합니다.(세션 과다 사용 시 서버 과부하)
브라우저는 필요할 때마다 이 키 값을 이용해 서버에 저장된 데이터를 사용하게 됩니다.
쿠키의 사용 목적?
- 세션 관리(Session management)
- 서버에 저장해야할 로그인, 장바구니 등의 정보를 관리한다.
- 개인화(Personalization)
- 사용자 선호, 테마 등의 세팅
- 트래킹(Tracking)
- 사용자 행동을 기록하고 분석하는 용도
쿠키의 라이프 타임?
쿠키의 라이프타임의 두가지 정의
- 세션 쿠키는 현재 세션이 끝날 때 삭제됩니다. 브라우저는 "현재 세션"이 끝나는 시점을 정의하며, 어떤 브라우저들은 재시작할 때 세션을 복원해 세션 쿠키가 무기한 존재할 수 있도록 합니다.
- 영속적인 쿠키는 Expires 속성에 명시된 날짜에 삭제되거나, Max-Age 속성에 명시된 기간 이후에 삭제됩니다.
쿠키 사용 예시
쿠키가 있어서 여러 페이지를 이동할 때마다 로그인을 하지 않아도
사용자 정보를 유지할 수 있는 것입니다.
쿠키가 없다면 다음 페이지로 정보를 파라미터로 넘겨줘야 합니다.
- ID 저장, 로그인 상태 유지
- 일주일간 다시 보지 않기.
- 최근 검색한 상품들을 광고에서 추천
- 쇼핑몰 장바구니 기능
세션 사용 예시
로그인 - 로그아웃
세션 아이디는 웹 브라우저 당 1개씩 생성되어 웹 컨테이너에 저장되며 브라우저 종료시 소멸됩니다.
로그인한 사용자에 대해서만 세션을 생성하는 것이 아니라
로그아웃하면 새로운 사용자로 인식해서 새로운 세션이 생성됩니다.
아이디, 닉네임 등의 정보를 세션에 담아두면 요청이 있을 때 마다, DB에 접근할 필요가 없어서 효율적입니다.
참고 :
https://developer.mozilla.org/ko/docs/Web/HTTP/Cookies
'WEB study > WEB(Springboot)' 카테고리의 다른 글
DB 설계 시 다대다(ManyToMany) 관계를 사용하면 안 되는 이유 (1) | 2024.11.21 |
---|---|
Refresh Token 사용 이유와 Redis를 활용한 관리 방법: Blacklist, TTL, 보안 강화 (0) | 2024.11.07 |
Spring Boot와 MyBatis의 연동 - Maven 의존성 설정 (0) | 2022.03.04 |
Spring Boot와 MyBatis의 연동 - Data Access Layer의 개념 (0) | 2022.03.03 |
Spring Bean 개념과 의존성 주입 - Spring Service 계층, Spring Bean, 의존성 주입 (0) | 2022.02.23 |