Trey

쿠키와 세션 본문

네트워크

쿠키와 세션

Trey Yi 2021. 3. 16. 01:25

쿠키와 세션을 사용하는 이유?

- HTTP 프로토콜 환경의 2가지 특징이자 약점 즉, 1) stateless(통신이 끝나면 상태를 유지하지 않고), 2) connectionless(클라이언트의 요청을 받으면 연결을 끊어버리는 특징) 때문에 일어나는 이슈를 보완해주기 때문에 사용한다.

- (stateless, connectionless 내용 추가 예정)

쿠키 (Cookies)

쿠키란?

- 쿠키란 사용자가 웹사이트를 접속했을 때, 방문한 웹사이트의 서버에서 사용자(또는 클라이언트)의 브라우저를 통해 디스크에 저장하는 작은 텍스트형식의 파일이다.

- (세션쿠키와 지속쿠키 추가 예정)

쿠키의 용도

- 세션 관리 (session management) : 사용자의 접속 시간, 로그인 정보 등 서버가 알고 있어야 할 정보들을 저장한다. (인증이라고도 할 수 있다.)

- 개인화 (personalization) : 사용자마다 다르게 만들어지는 광고를 보여주기 위해 사용한다.

- 트래킹 (tracking) : 웹사이트 테마, 언어 설정과 같은 정보들을 저장한다.

쿠키의 특징

- 쿠키의 데이터는 key, value로 구성되며 문자열로 이루어져있다. (binary data아님)

   : Name, Value, (optional) Attributes : expiration, domain, flags(ex - Secure, HttpOnly)

- 도메인 하나에 20-25개의 쿠키를 가질 수 있다.

- 브라우저 하나에 총 300개의 쿠키를 저장할 수 있다.

- 쿠키 하나의 용량은 4KB[4096bytes]로 제한된다.

- 웹사이트에서는 해당 웹사이트/도메인의 쿠키만을 읽을 수 있다. (ex - naver.com에서 google.com의 쿠키를 읽을 수 없음)

- 쿠키에는 방문한 사이트에 대한 정보와 개인정보가 저장되기 때문에, 보안 위험 및 사생활 침해의 소지가 있다.

쿠키 동작 방식

(이미지 및 설명 추가 예정)

세션 (Session)

세션이란?

- 상태 관리를 하지 않는 HTTP 프로토콜에서 사용자(클라이언트)의 상태 정보를 관리하기 위한 논리적 연결

세션의 용도

- 서버에서 생성되는 기본 객체로써, 요청을 보낸 웹 브라우저를 웹서버에서 구분(식별) 하기 위해 사용한다.

세션의 특징

- 세션의 유효한 기간은 브라우저가 서버와 계속 유지되거나, 서버에서 세션이 invalidate() 되기 전까지이다.

- session.setAttribute("Key", "Value")로 세션 값을 저장해 두고, 필요할 때마다 getAttribute(key)로 꺼내 쓸 수 있는 객체이다.

- 브라우저에서는 세션에 어떤 값이 들어있는지 알 수 없다. 세션 값은 서버에서만 확인 가능해야 한다.

세션 동작 방식

- 클라이언트(브라우저)에서 서버에 요청을 한다.

- 서버에서 클라이언트에 대한 데이터를 저장하고, 세션 객체를 생성한다.

- response로 쿠키에 세션 ID 쿠키를 포함하여 보내준다. (ex-Tomcat의 경우 JSESSIONID)

- 클라이언트는 response로 받은 세션ID 쿠키를 로컬에 저장한다.

- 클라이언트에서 요청을 할 때마다 쿠키 정보를 다 전달한다.

- 서버에서는 요청에서 쿠키 정보를 확인하고, SESSIONID라는 쿠키값을 이용해서 브라우저를 식별한다.

쿠키와 세션 비교

- (추가 예정)