일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 스프링 부트
- 스타트업
- bfs
- spring boot
- 개발자
- 프로그래머스
- IntelliJ
- 문자열
- spring
- 구름LEVEL
- Linux
- dfs
- 도커
- 스프링부트
- 자료구조
- 인텔리제이
- 주니어
- HashMap
- 구현
- 백엔드
- 이직
- docker
- 해시맵
- HTTP
- 해결
- 코딩테스트
- 배열
- 스프링
- Java
- 명령어
- Today
- Total
마이의 개발 블로그
[Web] 쿠키(cookie)와 세션(session) 본문
HTTP의 특징 2가지
1. 무상태 (stateless)
- 통신이 끝나면 상태정보를 유지하지 않는다는 특성 (이전의 요청과 다음의 요청이 관련이 없다는 의미)
- 장점 : 다수의 요청에 대해 서버가 추가 정보를 관리할 필요가 없어 부하를 줄일 수 있음
- 단점 : 서버측에서 클라이언트의 식별이 불가능함
2. 비연결성 (connectionless)
- 요청에 대한 응답이 끝나면 연결(connection)을 끊는다는 특성
- 장점 : 연결에 필요한 리소스를 효율적으로 관리하게 해줌 (불특정 다수의 클라이언트)
- 단점 : 동일한 클라이언트의 경우에도 연결, 해제에 대한 오버헤드 발생
쿠키와 세션의 사용 이유
웹을 사용하다보면 서버가 클라이언트의 정보를 알아야하는 경우가 많다. 예를들어, 쇼핑몰에서 물건을 구매하려면 사용자는 보통 로그인-물건고르기-장바구니담기-결제하기 등의 과정을 거쳐야 한다. HTTP 자체로는 위에 언급된 특징들(무상태, 비연결성)로 인해 상품 구매의 모든 과정마다 로그인을 해줘야 한다. 이를 보완하기 위해 서버측에서 클라이언트를 식별할 수 있도록 할 필요가 있었고, 이를 위해 만들어진 요소가 쿠키와 세션이다.
쿠키
- 서버를 통해 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일
- 클라이언트에 주요 정보 저장. 서버를 필요로 하지 않음
- 접속이 끝나도 로컬 저장소에 데이터를 보존할 수 있음
- 구성요소 : 이름, 값, 속성 (만료 기간, 도메인, 플래그 등)
- 단점 : 클라이언트에 저장되어 있기 때문에 내용이 변경되거나 요청을 보낼 때 누군가가 데이터를 가로챌 수 있음
- 예시 : 쇼핑몰 장바구니, 자동 ID 완성, 로그인 유지 등
세션
- 사용자가 서버에 접속해있는 상태를 하나의 단위로 파악하여 연결을 유지시켜주는 기술
- 서버에 주요 정보 저장. 사용자는 서버로부터 고유한 세션 ID를 받아 세션쿠키에 저장하여 사용함
- 일정 시간 또는 브라우저 종료 시 삭제됨
- 장점 : 서버에만 정보가 저장되어 보안이 쿠키에 비해 우수한 편임
- 단점 : 사용자가 많아질수록 서버에 과부하가 걸림 (사용자당 하나의 세션 생성)
- 예시 : 사용자 로그인 등
쿠키와 세션 비교
- 쿠키는 클라이언트에, 세션은 서버에 저장됨
- 쿠키는 탈취, 변조의 위험이 있고 세션은 비교적 안전함
- 쿠키는 로컬 저장소에 유지되나 세션은 브라우저 종료 또는 세션 만료시 소멸 (세션쿠키는 세션과 함께 소멸)
- 쿠키는 속도면에서 유리하고 세션은 그에비해 느린 편
'개발지식 > Web' 카테고리의 다른 글
[HTTP] 응답코드 200 대신 304가 뜨는 이유 (브라우저 캐싱) (2) | 2023.02.01 |
---|---|
[Swagger] Token "Component" does not exist 에러 대처 방법 (2) | 2023.01.16 |
[AWS] Elastic Beanstalk 인스턴스 HTTP에서 HTTPS로 전환하기 (0) | 2022.12.29 |
[Web] HTTP 응답 상태 코드 (HTTP response status code) (0) | 2022.11.01 |
[Web] REST (Representational State Transfer) 정리 (0) | 2022.02.23 |