쿠키(cookie), 세션(session)의 차이
사용하는 이유
HTTP 프로토콜의 특징이자 약점인 Connectionless(비연결성), Stateless(상태없음, 무상태) 을 보완하기 위해 사용한다
HTTP 특징
① Connectionless(비연결성)
클라이언트와 서버가 한 번 연결을 맺은 후, 클라이언트 요청에 대해 서버가 응답을 마치면 맺었던 연결을 끊어 버리는 성질
② Stateless(상태없음, 무상태)
클라이언트의 상태 정보를 가지지 않는 서버 처리 방식
=> 이렇게 HTTP의 Connectionless, Stateless 특징 때문에 발생하는 문제가 있다
-
쇼핑몰 접속
-
로그인
-
상세 페이지
-
로그인
-
장바구니
-
로그인
-
주문
-
로그인
- …
상태 정보를 가지고 있지 않기 때문에 로그인 무한 반복을 수행해야 한다
상태 정보를 저장하기 위해 쿠키(cookie), 세션(session)을 사용한다
쿠키(cookie)
특징
클라이언트 로컬(local)에 저장되는 키와 값(key, value)이 들어있는 작은 데이터 파일이다
서버에서 HTTP Response Header에 Set-Cookie 속성을 이용하여 클라이언트에 쿠키를 제공한다
이름, 값, 만료일(저장기간 설정), 경로 정보 등이 들어있다
쿠키는 클라이언트의 상태 정보를 로컬에 저장했다가 요청(Request)할 때 정보를 참조하거나 재사용할 수 있다
동작 순서
- 클라이언트가 페이지 요청(사용자가 웹사이트 접근)
- 웹 서버는 쿠키 생성
- 생성한 쿠키에 정보를 담아 HTTP 화면을 돌려줄 때 함께 클라이언트에게 돌려줌
- 넘겨 받은 쿠키는 클라이언트가 가지고 있다가(로컬 PC에 저장) 다시 서버에 요청할 때 요청과 함께 쿠키를 전송
-
동일 사이트 재방문 시 클라이언트의 PC에 해당 쿠키가 있는 경우, 요청 페이지와 함께 쿠키를 전송
사용 예시
방문했던 사이트 재방문 시 아이디, 비밀번호 자동 입력
"이 창을 다시 보지 않기" 체크
세션(session)
특징
일정 시간동안 같은 사용자(브라우저)로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그 상태를 일정하게 유지하는 기술이다
=> 웹 브라우저를 통해 웹 서버에 접속한 시점으로부터 웹 브라우저를 종료하여 연결을 끝내는 시점
(브라우저에 접속해 있는 상태가 하나의 단위 = 세션)
웹 서버에 클라이언트에 대한 정보를 저장하고 클라이언트를 구분할 수 있는 ID를 부여하는데 이것을 session-id(임의의 긴 문자열)라고 한다
동작 순서
- 클라이언트가 페이지 요청(사용자가 웹사이트 접근)
- 서버는 접근한 클라이언트의 Request-Header 필드인 Cookie를 확인하여, 클라이언트가 해당 session-id를 보냈는지 확인
- session-id가 존재하지 않는다면, 서버는 session-id를 생성해 클라이언트에게 돌려줌
- 서버에서 클라이언트로 돌려준 session-id를 쿠키를 사용해 서버에 저장 ₁
- 클라이언트는 재접속 시, 이 쿠키를 이용하여 session-id 값을 서버에 전달
- 서버로부터 발행(응답)된 session-id는 해당 서버(웹)와 클라이언트(사용자 브라우저) 메모리에 저장
- 클라이언트 접속 종료(브라우저 종료) 시 서버에 저장된 session-id는 사라짐
₁ 이때 사용되는 쿠키는 세션 종료 시 같이 사라지는 memory cookie 타입이다
사용 예시
로그인 정보 유지
세션(session)이 쿠키(cookie)보다 보안 부분에서 안전한데 사용하지 않는 이유?
=> 세션은 서버에 데이터를 저장하고 서버의 자원을 사용하기 때문에, 서버 자원에 한계가 있고 메모리를 사용하다보면 속도 저하도 올 수 있기 때문이다
쿠키(cookie), 세션(session) 차이 표
쿠키(Cookie) | 세션(Session) | |
저장 위치 | 클라이언트 로컬 | 서버 |
저장 형식 | Text | Object |
만료일 | 쿠키 저장 시 설정(브라우저를 종료해도 만료일이 지나지 않으면 삭제되지 않음) | 브라우저 종료 시 삭제(기간 지정 가능) |
사용 자원(리소스) | 클라이언트 리소스 | 서버 리소스 |
용량 제한 | 클라이언트에 총 300개 도메인 당 200개 하나의 쿠키는 4KB(=4096Byte)까지 저장 가능 |
|
속도 | 빠름 | 느림 |
보안 | 안전하지 않음 | 안전 |
'ETC' 카테고리의 다른 글
[#. Markdown] Git README.md, Markdown 작성법 (0) | 2020.12.17 |
---|---|
[#. Markdown Editor] Markdown Editor for Chrome 크롬 마크다운 에디터 (0) | 2020.12.11 |
#9. iframe 동영상 위에서 swiper slide not work 슬라이드 안 될 때 해결 (1) | 2020.09.23 |
#8. iframe youtube 썸네일을 이미지 주소로 가져오기 (0) | 2020.09.23 |
#7. 맥북 화면 녹화 어플, 맥북 gif 생성 어플 GIPHY CAPTURE (0) | 2020.09.22 |