쿠키와 세션

박상은·2021년 8월 28일
0

🎁 분류 🎁

목록 보기
2/16

1. 쿠키(cookie)

쿠키란 클라이언트인 브라우저에 저장되는 작은 데이터 파일을 의미
기본적으로 클라이언트측의 브라우저 저장됨

2. 세션(session)

세션이란 서버에 클라이언트의 데이터를 저장하는 기술을 의미
기본적으로 서버측의 메모리에 저장됨

3. 쿠키와 세션이 필요한 이유

HTTP는 요청에 대한 응답을 주고나서 연결을 끊는 특성을 가짐

만약 특정 브라우저에서 로그인을 요청했고 해당 요청이 정상인증되어서 로그인유저라고 응답을 줬을 경우
로그인된 유저라는 응답을 주자마자 서버측에서는 연결을 끊고 해당 상태정보를 지워버림
그렇게되면 로그인했음에도 불구하고 다른 요청시 기존에 로그인했던 정보를 잊고 비로그인상태라고 판단함

HTTP특성에 따라서 발생하는 위와 같은 문제점을 해결하기위해서 쿠키와 세션을 사용하는 것으로 알고 있음

4. 쿠키와 세션의 동작방식

로그인으로 예를 들면

  1. 클라이언트에서 로그인데이터와 함께 로그인 요청이 들어옴
  2. 로그인 요청을 보고 받은 데이터와 함께 검증해서 로그인인증이 완료됨
  3. 로그인 인증이 완료되면 세션에 해당 유저의 정보들을 저장함 ( _id, id, password, nickname 등등 )
    • _id는 유저를 구별하는 고유의 아이디
  4. 해당 세션에 저장한 정보들을 가리키는 랜덤한 값인 세션아이디를 생성함 ( XLTASSAKAT12라고 가정 )
  5. 쿠키에 XLTASSAKAT12값을 저장하고 클라이언트에게 응답할 때 같이 넘겨줌
  6. 클라이언트에서 XLTASSAKAT12라는 쿠키를 가지고 있다가 다른 요청을 서버측에 넘겨줄 때 쿠키를 동봉해서 같이 넘겨줌
  7. 서버측에서 XLTASSAKAT12라는 쿠키를 보고 그와 맞는 세션아이디를 찾아보고 존재한다면 로그인인증해줌
  8. 세션에 저장된 유저의 정보들을 이용해서 클라이언트에서 요청한 일을 처리함

이렇게 쿠키와 세션을 이용해서 따로 처리해주지않아도 서버에서는 유저인증을 자동으로 해줌

마무리

쿠키와 세션을 공부한 이유는 이번에 node.js의 passport의 local전략을 사용하는데 내부적으로 express-session을 사용한다고 들었는데 session이 뭔지도 모르고 공부하니 이해가 안갔었는데 쿠키와 세션에 대해서 공부해보니 어느정도 이해가는것 같음

클라이언트와 브라우저측에 모두 withCredentials옵션을 true로 넣어주니 쿠키값이 브라우저측에 저장되는것을 보고 왜 사용하는건지 이해됨

참고한 사이트

  1. 여기
  2. 여기
  3. 여기

0개의 댓글