Cookie & Session

다혜·2022년 4월 5일
2

Web

목록 보기
4/5
post-thumbnail

🌐 HTTP의 특징

✔ HTTP 프로토콜 환경은 connectionless하고 stateless하다는 특성을 가진다.
✔ HTTP 프로토콜의 특성이자 약점을 보완하기 위해 쿠키 또는 세션을 사용한다.

  • connectionless
    클라이언트의 요청을 받은 서버가 응답을 하고 접속을 끊는 특징.

  • stateless
    통신이 끝나면 상태 정보를 유지하지 않는 특징.


🍪 Cookie

쿠키는 클라이언트 로컬에 저장되는 key-value 쌍의 작은 데이터파일이다.


✅ 쿠키의 특징

  • 유효시간을 명시할 수 있고, 명시하지 않으면 브라우저 종료시 삭제된다.
  • Response Header에 Set-Cookie 속성을 사용하여 클라이언트에 쿠키를 만들 수 있다.
  • Text파일로 저장된다.

✅ 쿠키의 구성 요소

  • 이름 : 각각의 쿠키를 구별하는 데 사용되는 이름
  • 값 : 쿠키의 이름과 관련된 값
  • 유효시간 : 쿠키의 유지시간
  • 도메인 : 쿠키를 전송할 도메인
  • 경로 : 쿠키를 전송할 요청 경로
  • 보안연결여부
  • HttpOnly여부

✅ 동작 방식

  1. 클라이언트가 서버에 요청을 한다.
  2. 서버는 상태를 유지하고 싶은 값을 쿠키로 생성한다.
  3. 서버가 응답할 때 HTTP헤더에 쿠키를 포함해서 전송한다.
    Set−Cookie: id=bongsik
  4. 쿠키는 만료기간까지 클라이언트에서 보관한다.
  5. 클라이언트는 같은 요청을 할 때, HTTP헤더에 쿠키를 함께 보낸다.
    Cookie: id=bongsik
  6. 서버에서 쿠키를 읽어 이전 상태 정보를 읽어 응답한다.

쿠키 사용 예시

  • 아이디, 비밀번호 저장
  • 장바구니
  • 팝업창 오늘 이 창 보지 않음



🔗 Session

세션은 브라우저 종료 전까지 클라이언트의 요청을 유지해주는 기술이다.


✅ 세션의 특징

  • 세션은 쿠키에 기반한다.
  • 보안 측면에서 쿠키보다 좋다.
  • 사용자가 많아질수록 서버 메모리를 많이 차지하게된다.

✅ 동작방식

  1. 웹브라우저가 서버에 요청을 한다.
  2. 서버는 해당 웹브라우저(클라이언트)에 대한 세션 ID를 생성한다.
  3. 응답할 때 HTTP헤더에 세션 ID를 포함해서 웹브라우저에 전송한다.
    Set−Cookie: SESSIONID=q1w2e3r3
  4. 웹브라우저는 세션 ID 값이 담긴 쿠키를 만들어 저장한다.
  5. 웹브라우저는 요청 시, 세션 ID가 담겨있는 쿠키를 HTTP 헤더에 넣어서 전송한다.
    Cookie: SESSIONID=q1w2e3r3
  6. 서버는 세션 ID를 확인하고 해당 세션에 관련된 정보를 확인한 후 응답한다.

쿠키 사용 예시

  • 로그인정보 유지 등 보안상 중요한 작업



👀 Cookie & Session 비교

✔ 세션도 결국 쿠키를 사용하기 때문에, 쿠키와 세션은 비슷한 역할을 하고 동작원리가 비슷하다.
✔ 둘 다, 임시로 정보를 저장해둠으로서 생산성을 높이는 목적을 가진다.
✔ 저장 위치,저장 방식, 보안, 라이프 사이클, 속도, 용량 제한 측면에서 차이점이 있다.


📌 저장 위치

  • 쿠키 : 클라이언트
  • 세션 : 서버

📌 저장 방식

  • 쿠키 : 하드디스크 내 텍스트 파일
  • 세션 : 웹 컨테이너 내 객체

📌 보안

  • 쿠키 : 클라이언트에 저장되기 때문에 탈취와 변조 가능성이 있어 보안에 취약하다.
  • 세션 : 쿠키를 이용해 세션 ID만 저장하고 그것을 구분해서 서버에서 처리하기 때문에 비교적 보안성이 좋다.

📌 라이프 사이클

  • 쿠키 : 만료시간에 따라 브라우저를 종료해도 계속해서 남아있다.
  • 세션 : 만료시간이 존재하지만, 브라우저가 종료되면 만료시간에 상관없이 삭제된다.

📌 속도

  • 쿠키 : 클라이언트에 저장되어있어 빠르다.
  • 세션 : 서버에 저장되어 있어 서버의 처리가 요구되기 때문에 비교적 느리다.

📌 용량 제한

  • 쿠키 : 총 300개. 한 도메인당 20개. 한 쿠키 당 최대 4KB. 초과 시 가장 오래된 쿠키부터 제거.
  • 세션 : 제한 없음(서버 허용 범위 내)



❓ Cookie/Session과 Cache

  • 캐시는 변경이 잘 되지 않고 자주 사용되는 정적 컨텐츠(이미지, css, js)를 빠르게 접근 가능한 위치에 저장해두고 사용하는 것이다.
  • 렌더링 속도를 높이는 것이 목적이다.
  • 한번 캐시에 저장되면 브라우저를 참고하기 때문에 서버에서 변경이 되어도 바로 확인이 불가능하다.
  • 캐시를 삭제하거나 서버에서 캐시 만료기간을 설정해주어야 한다.






💛 참고 :
https://dev-coco.tistory.com/61
https://chrisjune-13837.medium.com/web-%EC%BF%A0%ED%82%A4-%EC%84%B8%EC%85%98%EC%9D%B4%EB%9E%80-aa6bcb327582
https://doooyeon.github.io/2018/09/10/cookie-and-session.html
https://ryusae.tistory.com/7

profile
봉식이를 위한 개발을 하고 싶오

0개의 댓글