개발로 자기계발
728x90
사용자(클라이언트)의 인증 정보를 포함하고 있는 Cookie와 Session

 

쿠키의 탄생

사용자(클라이언트)의 IP 주소와 User-Agent는 매번 변경되며 고유하지 않은 정보로,

HTTP 프로토콜의 Connectionless와 Stateless 특징 때문에 웹 서버는 사용자(클라이언트)를 기억할 수 없다.

HTTP 프로토콜
Connectionless 하나의 요청에 하나의 응답을 한 후에 연결을 종료한다.
Stateless 통신이 끝난 후 상태 정보를 저장하지 않는다.
=> 서버가 많은 사용자(클라이언트) 연결을 추적할 필요가 없기 때문에(HTTP 확장 가능)

=> 이런 특성들 인해 HTTP상에서 상태 유지를 위해서 쿠키가 탄생했다.

=> 쿠키는 사용자(클라이언트)의 정보와 상태를 담고 있다.

 

쿠키의 통신

1. 쿠기가 없을 때

  • 로그인

사용자(클라이언트)  ----------------로그인 정보-------------- 서버

사용자(클라이언트) -----------------로그인 확인 --------------서버

이후에는 서버에서는 사용자(클라이언트)를 기억할 수 없다.

 

  • 데이터 호출

사용자(클라이언트)  ----------------데이터 호출-------------------- 서버

사용자(클라이언트)  ----------------데이터 호출 불가-------------- 서버

서버에서는 사용자(클라이언트)가 누군지 알 수 없기에 데이터가 호출이 불가하다.

 

 

2. 쿠기가 있을 때

  • 로그인

사용자(클라이언트)  --------------------------------로그인 정보------------------------------------- 서버

사용자(클라이언트) ------------로그인 확인(쿠키에 정보를 담아 보낸다.) ------------------- 서버

이후에는 서버에서는 쿠키를 통해 사용자(클라이언트)를 알 수 있다.

 

  • 데이터 호출

사용자(클라이언트)  --------------데이터 호출(쿠키에 정보를 담아 보낸다.)----------------- 서버

사용자(클라이언트)  ------------------------------------데이터 호출 가능--------------------------- 서버

사용자(클라이언트)는 서버에 쿠키를 포함해서 데이터를 요청한다.

쿠키는 Key와 Value로 이루어져 있다.


 

세션의 탄생

사용자(클라이언트)가 쿠키를 변조해서 서버에 요청을 할 수 있다 => 정보가 탈취된다.

그래서 사용자(클라이언트)가 인증 정보를 변조할 수 없게 하기 위해 세션을 사용한다.

세션은 인증 정보를 서버에 저장하고 데이터에 접근할 수 있는 키를 만들어서 사용자(클라이언트)에게 전달한다.
Key = 랜덤 문자열 = Session ID

 

세션의 통신
  • 로그인

사용자(클라이언트)  -------------------------------------로그인 정보-------------------------------- 서버

사용자(클라이언트) ----------로그인 확인(Session ID를 쿠키에 담아서 보낸다.) ----------서버

서버는 사용자(클라이언트)에게 Session ID를 제공한다.

 

1. 세션이 있을 때

  • 데이터 호출

사용자(클라이언트)  -------- ---데이터 호출(Session ID를 쿠키에 담아서 보낸다.)-------- 서버

사용자(클라이언트)  ---------------------------------데이터 호출 가능------------------------------ 서버

서버는 요청에 포함된 키를 확인하고 데이터를 준다.

 

2. 세션이 없을 때

  • 데이터 호출

사용자(클라이언트)  ----------데이터 호출(쿠키를 보낸다.)--------------------------------------- 서버

사용자(클라이언트)  ------------------------------데이터 호출 불가---------------------------------- 서버

서버는 요청에 포함된 키가 없기 때문에 데이터를 주지 않는다.

 

쿠키는 이용자가 저장하며, 세션은 서버가 저장한다는 것에 있어서 차이가 있다.

 

728x90
SMALL

'Develop > 기초지식' 카테고리의 다른 글

자료구조 & 알고리즘 - 1  (0) 2023.04.10
코딩 테스트 특강 간단 정리  (0) 2023.04.10
JSON Web Token(JWT)  (0) 2023.01.07
HTTP / HTTPS 대한 기본 정리  (0) 2022.12.31
인코딩 정의 / 디코딩 정의  (0) 2022.12.30
profile

개발로 자기계발

@김잠봉

틀린부분이나 조언이 있다면 언제든 환영입니다:-)