쿠키, 세션

namu445 2021. 10. 21. 16:17

HTTP는 connectionless, stateless 특성을 가지고있음

쿠키와 세션은 이 특성으로 인한 문제를 보완하기 위해서 사용한다.

 

connectionless

  • 클라이언트가 요청에 응답을 받으면 연결을 끝는 특성
  • Keep-alive라는 값을 헤더에 넣어서 연결을 재활용 할 수 있다. Keep-alive는 HTTP1.1에서 디폴트(현재 버전은HTTP2와 HTTPS)

stateless

  • 연결(클라이언트와 서버의 통신)이 끝나면 상태 정보를 유지하지 않는 특성

쿠키

  • 클라이언트의 브라우저에서 지정한 로컬 경로에 파일로 저장됩니다.
  • 쿠키가 유효한 기간을 명시할 수 있습니다. 유효 시간을 명시하면 브라우저가 종료되도 쿠키가 유효하며 인증이 가능합니다.
  • Response Header에 Set-Cookie  속성을 사용해서 쿠키를 생성합니다.

 

동작방식

  1. 클라이언트가 페이지를 요청
  2. 서버에서 쿠키를 생성
  3. HTTP 헤더에 쿠키를 포함 시켜 응답
  4. 브라우저가 종료되어도 쿠키 만료 기간이 남아있다면 클라이언트에서 보관하고 있음
  5. 같은 요청을 할 경우 클라이언트는 HTTP 헤더에 쿠키를 함께 보냄
  6. 서버에서 쿠키를 읽고 이전 상태 정보를 변경 할 필요가 있을 때 쿠키를 업데이트해서 변경된 쿠키를 HTTP 헤더에 포함해서 응답(Response)

세션

  • 세션도 쿠키를 사용합니다.
  • 세션은 서버 측에 저장되어 관리됩니다.
  • 서버는 클라이언트를 구분하기 위해서 세션 ID를 부여합니다.
  • 세션은 최대한 예측하기 어렵게 생성합니다.
  • 클라이언트 브라우저가 종료되면 인증이 해제됩니다.
  • 브라우저가 종료되지 않아도 일정 시간 응답이 없으면 인증이 해제되게 설정이 가능합니다.
  • 사용자(페이지 접속자)가 많아질 수록 서버 메모리 사용량이 늘어나며 부하가 늘어납니다.

 

동작방식

  1. 클라이언트가 서버에 접속 시 세션 ID를 발급 받음
  2. 클라이언트는 세션  ID에 대해 쿠키를 사용해서 저장하고 가지고 있음
  3. 클라이언트는 서버에 요청할 때 쿠키와 세션ID를 같이 서버에 전달
  4. 서버는 세션 ID를 전달 받고 ID에 해당하는 클라이언트 정보를 가져와서 사용
  5. 클라이언트 정보를 가지고 요청을 처리하고 클라이언트에 응답

쿠키와 세션 차이

  • 저장되는 위치(로컬vs서버)
  • 처리 속도는 쿠키가 세션보다 빠름(유의미한 차이일까?)
  • 파일로 저장vs메모리에 저장->파일로 저장되면 지워도 흔적이 남을 수 있음(포렌식 가능?)

쿠키 저장 위치

브라우저 마다 다르다.

 

IE

-C:\Users\사용자\AppData\Roaming\Microsoft\Windows\Cookies

Chrome

-C:\Users\사용자\AppData\Local\Google\Chrome\User Data\Default\Cache

 

크롬은 캐시와 관련된 듯? 캐시는?

 

세션이 서버 성능에 영향을 주는 문제를 해결하기 위해서 JWT(JSON Web Token)을 사용한다고?

 

웹 스토리지

로컬 스토리지

  • 클라이언트 정보를 영구적으로 저장한다.

세션 스토리지

  • 클라이언트 정보를 저장한다. 저장한 정보는 브라우저를 닫을 떄 사라진다.

 

 

<출처>

https://interconnection.tistory.com/74 

 

쿠키와 세션 개념

노션 페이지(아래 내용과 동일) 개요 쿠키와 세션은 개발자 말고도 인터넷 사용자라면 누구나 많이 들어본 단어입니다. 하지만 개념에 대해서는 많은 사람들이 헷갈려 하기에 쉽고 

interconnection.tistory.com

https://m.blog.naver.com/krquddnr37/20203705957 

 

[Web][Cookie] IE, Chrome 쿠키 저장 위치

쿠키 저장 위치 IE - C:\Users\사용자\AppData\Roaming\Microsoft\Windows\Cookies 크롬 - C:\...

blog.naver.com

https://velog.io/@kler/TIL4-%EB%A1%9C%EC%BB%AC%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80-%EC%84%B8%EC%85%98%EC%8A%A4%ED%86%A0%EB%A6%AC%EC%A7%80-%EC%BF%A0%ED%82%A4-%EC%A0%95%EB%A6%AC

 

로컬스토리지, 세션스토리지, 쿠키 정리

​​​​​​​​자동 로그인 -> 로컬스토리지입력 폼 정보 -> 세션스토리지비로그인 장바구니 -> 세션스토리지다시 보지 않음 팝업 창 -> 쿠키​​​ 자바스크립트 객체 예시 let object = {}​​loc

velog.io

 

'' 카테고리의 다른 글

API?  (0) 2022.01.16
JWT를 이용한 로그인 기능  (0) 2022.01.16
Bulma  (0) 2022.01.13
Sublime text sudo권한으로 실해하기  (0) 2021.10.17
정적 페이지 VS 동적 페이지  (0) 2021.10.17