쿠키(Cookie) & 세션(Session)

HaYeong Jang·2021년 8월 6일
0

목록 보기
1/2

HTTP의 특징

  • Connectionsless(비연결성): 클라이언트가 서버로부터 요청(Request)에 맞는 응답(Response)을 받으면 연결이 끊어짐
  • Stateless(비상태성): 클라이언트와 첫번째 통신에서 데이터를 주고 받았다 해도, 두번째 통신에서 이전 데이터를 유지하지 않는 것

Why? 서버의 자원을 절약하기 위해
이로 인해, 사용자를 식별할 수 없어서 매번 새로운 사용자로 인식한다는 단점이 생김

✨ 이를 보완하기 위해 쿠키와 세션 등장! ✨

쿠키와 세션의 차이

CookieSession
저장위치ClientServer
저장형식TextObject
만료시점쿠키 저장시 설정
(설정 없으면 브라우저 종료 시)
정확한 시점 모름
리소스클라이언트의 리소스서버의 리소스
용량제한한 도메인 당 20개, 한 쿠키당 4KB제한없음

저장 위치

  • Cookie: 클라이언트의 웹 브라우저가 지정하는 메모리 or 하드디스크
  • Session: 서버의 메모리에 저장

만료 시점

  • Cookie: 저장할 때 expires 속성을 정의해 무효화시키면 삭제될 날짜 정할 수 있음
  • Session: 클라이언트가 로그아웃하거나, 설정 시간동안 반응이 없으면 무효화 되기 때문에 정확한 시점 알 수 없음

리소스

  • Cookie: 클라이언트에 저장되고 클라이언트의 메모리를 사용하기 때문에 서버 자원 사용하지 않음
  • Session: 세션은 서버에 저장되고, 서버 메모리로 로딩 되기 때문에 세션이 생길 때마다 리소스를 차지함

용량 제한

  • Cookie: 클라이언트도 모르게 접속되는 사이트에 의하여 설정될 수 있기 때문에 쿠키로 인해 문제가 발생하는 걸 막고자 한 도메인당 20개, 하나의 쿠키 당 4KB로 제한해 둠
  • Session: 클라이언트가 접속하면 서버에 의해 생성되므로 개수나 용량 제한 없음

쿠키와 세션을 이용한 인증 방식

  • 세션 저장소로 Redis를 많이 사용
  • 세션ID를 쿠키라고 봐도 동일. 쿠키가 사용자 개념에서 더 큰 범주. 세션ID를 쿠키로 저장하는 셈이다.
  • 세션은 서버에서 가지고 있는 정보이며 쿠키는 사용자에게 발급된 세션을 열기 위한 열쇠(SESSION ID)를 의미
  • 사용자가 해킹당하는 것보단 서버가 해킹당하는게 훨씬 어렵기 때문에 인증의 책임을 서버가 지게 함

쿠키와 세션 사용

  • Cookie: 사용자의 편의를 위한 것으로 지워져도 되고, 조작되거나 가로채이더라도 큰 지장이 없는 수준의 정보
    ex) 로그인 상태 유지, 일주일간 다시 보지 않기, 쇼핑몰 장바구니 기능

  • Session: 사용자나 다른 누군가에게 노출되면 안되는 중요한 정보


참고 링크

https://devuna.tistory.com/23

https://interconnection.tistory.com/74

https://tansfil.tistory.com/58

profile
기억하기 위해 기록하는 개발로그👣

0개의 댓글