[web] Cookie & Session

2425 단어 webweb

Auth를 통해 서비스는 유저를 인증한다.
Auth를 만들때 쿠키와 세션이 필요하고 많이 들어봤지만, 항상 개념이 헷갈렸으므로 정리해 보고자 한다.

Cookie

쿠키를 이용해서 서버는 나의 브라우저에 데이터를 넣을 수 있다.
나에 대한 것을 기억하기 위해서!
웹사이트에 방문하면, 브라우저는 서버에 요청을 보내게 된다.
서버는 이에 응답하고, 이 응답에는 모든 데이터와 페이지 정보가 있다.
또한 그곳에는 브라우저에 저장하고자 하는 쿠키(Cookie) 가 있다.
이제 브라우저에 쿠키가 저장되고, 그 웹사이트에 방문할 때마다 브라우저는 해당 쿠키도 요청과 함께 보내게 된다.
쿠키는 서버가 정한 기간에 따라 유효하다.
쿠키는 인증 뿐만 아니라 여러가지 정보를 저장한다.
예를 들어, 웹사이트 언어설정을 kor로 바꾸면, 서버는 쿠키를 주고
브라우저는 내가 선택한 언어설정을 저장한다.
따라서 다음에 내가 웹사이트에 방문할때 쿠키는 요청과 함께 서버로 보내지고 서버는 쿠키가 기억해둔 언어설정의 페이지를 제공한다!

  1. 웹사이트 방문
    1-1) 브라우저 --->request---> 서버
    1-2) 브라우저 <---response(cookie포함)<--- 서버
    1-3) 브라우저 : 쿠키저장완료!
  2. 웹사이트 재방문
    2-1) 브라우저(저장해논 쿠키 같이 보내요~)--->request(cookie)--->서버
    2-2) 브라우저 <---response<--- 서버 (쿠키가 기억해둔 정보로 응답!)

Session

http 프로토콜은 stateless이다.
stateless란 서버로 가는 모든 요청이 독립적으로 다뤄진다는 뜻이다.
요청끼리 연결이 없기 때문에 요청이 끝나면 서버는 우리가 누군지 잊어버린다. 그렇기에 요청 할 때마다 우리가 누군지 알려주어야한다. 이를 하는 방법 중 하나가 바로 세션(Session)이다.

  1. "yunjin"이라는 유저명과 비밀번호를 서버에 보내면 세션DB에 "yunjin"이라는 유저를 생성할 것이다. 이때 해당 세션에는 별도의 ID가 있다.
  2. 이 세션ID는 쿠키를 통해 브라우저로 돌아오고 저장된다.
  3. 따라서 웹사이트의 다른 페이지로 들어가면 브라우저는 세션ID를 갖고있는 쿠키를 서버에게 보낼것이다.(왜냐? 쿠키는 자동으로 보내짐!)
  4. 서버는 들어오는 쿠키를 보고 세션ID를 확인할 것이다.
  5. 서버는 해당 세션ID를 보고 세션DB에서 내가 "yunjin"이라는 유저명을 가진 유저라는 것을 알게된다.

페이지를 옮겨다닐 때마다 이 프로세스가 반복된다.

중요한 유저정보는 서버에 있고,
유저가 갖고있는 것은 세션ID뿐이고,
쿠키는 세션ID를 전달하기위한 매개체일 뿐이다.

Cookie vs Session

		Cookie				Session
----------------------------------------------------------------
저장위치		Client				Server
저장형식		Text				Object
만료시점		쿠키 저장시 설정			정확한 시점 모름
리소스		클라이언트의 리소스 		서버의 리소스
용량제한		한 도메인 당 20개, 한 쿠키당 4KB	제한없음

references

https://gyoogle.dev/blog/web-knowledge/Cookie%20&%20Session.html
https://www.youtube.com/watch?v=tosLBcAX1vk&t=116s&ab_channel=%EB%85%B8%EB%A7%88%EB%93%9C%EC%BD%94%EB%8D%94NomadCoders

좋은 웹페이지 즐겨찾기