✅ 쿠키(Cookie)란?
웹 서버가 브라우저에게 지시하여 "사용자의 로컬 컴퓨터"에 파일 또는 메모리에 저장하는 작은 기록 정보 파일
ex ) 방문했던 사이트에 다시 방문 하였을 때 아이디와 비밀번호 자동 입력
ex ) 팝업창을 통해 "오늘 이 창을 다시 보지 않기" 체크
✅ 세션(HTTP Session)이란?
쿠키의 트래픽 문제와 쿠키를 변경하는 보안적 이슈를 해결하기 위해 등장
🎯 쿠키와 세션의 차이
✔ 저장 위치
쿠키 - 클라이언트(브라우저)에 메모리 또는 파일에 저장
세션 - 서버 메모리에 저장
✔ 보안
Cookie - 클라이언트 로컬(local)에 저장되기도 하고 특히 파일로 저장되는 경우 탈취, 변조될 위험이 있고,
Request/Response에서 스나이핑 당할 위험이 있어 보안이 비교적 취약하다.
Session - 클라이언트 정보 자체는 서버에 저장되어 있으므로 비교적 안전하다.
✔ 라이프 사이클
쿠키는 앞서 설명한 지속 쿠키의 경우에 브라우저를 종료하더라도 저장되어 있을 수 있는 반면에
세션은 서버에서 만료시간/날짜를 정해서 지워버릴 수 있기도 하고 세션 쿠키에 세션 아이디를 정한 경우,
브라우저 종료시 세션아이디가 날아갈 수 있다.
✔ 속도
쿠키에 정보가 있기 때문에 서버에 요청시 헤더를 바로 참조하면 되므로 속도에서 유리하지만,
세션은 제공받은 세션아이디(Key)를 이용해서 서버에서 다시 데이터를 참조해야하므로 속도가 비교적 느릴 수 있다.
🎯 Q&A
Q. 세션을 쓰면되는데 굳이 쿠키를 사용하는 이유?
A. 세션이 쿠키에 비해 보안도 높은 편이나 쿠키를 사용하는 이유는 세션은 서버에 저장되고, 서버자원을 사용하기 때문에 사용자가 많을 경우 소모되는 자원이 상당하다.
이러한 자원관리 차원에서 쿠키와 세션을 적절한 요소 및 기능에 '병행 사용'하여, 서버 자원의 낭비를 방지하며 웹사이트의 속도를 높일 수 있다.
🎯 리액트에서 쿠키 사용하기
1. 리액트 쿠키 다운
2. Cookies에도 provider가 존재하여, redux를 사용할 때와 마찬가지로 하위 컴포넌트를 감싸주는 형식으로 작성 사용 (모든 페이지 감싸기)
3. 쿠키를 사용하는 페이지에 import { useCookies } from "react-cookie"; 추가
4. 쿠키와 관련된 함수 생성