🎯 쿠키와 세션
1. 🍪 쿠키란?
쿠키는 웹사이트가 나중에 검색할 수 있도록 웹 브라우저 내에 저장되는 웹사이트의 데이터 조각입니다.
쿠기는 사용자가 특정 웹사이트로 돌아왔음을 서버에 알리는 데 사용됩니다. 사용자가 웹사이트를 다시 방문하면 쿠키는 정보를 제공하고 사이트가 선택한 설정과 타켓 콘텐츠를 표시할 수 있도록 합니다.
흔히 웹 상에서 이야기하는 쿠키란 HTTP 쿠키, 웹 쿠키, 브라우저 쿠키라고도 불리며, 웹 브라우저에서 이용하는 정보 파일을 말합니다. 쿠키라는 단어의 어원은 1994년 넷스케이프 한 개발자가 유닉스 프로그래머들이 프로그램 수신 후 변경하지 않고 반환하는 데이터의 패킷을 '매직 쿠키'라고 부르는 것에서 유래했습니다
2. 🍪 쿠키가 저장하는 것들
이 작은 데이터 파일에 어떤걸 저장할까요? 크게 3가지를 저장합니다.
1. 사이트에 방문한 이력
2. 검색 기록
3. 로그인 상태
3. 🍪 쿠키의 특징
📌 특징 1 - 브라우저 단위로 쿠기 생성
같은 기기로 같은 도메인 싸이트에 접속했는데 크롬과 사파리는 쿠키를 서로 공유하지 않습니다. 따라서 만약 내가 크롬에서 넷플릭스를 로그인했다고 해도 사파리로 넥플릭스를 접속하면 다시 로그인 해야합니다.
📌 특징 2 - 다른 도메인을 대신하여 쿠키 발급 불가
예를들어서 넥플릭스 쿠키를 왓챠가 대신 발생해 줄 수 없습니다.
📌 특징 3 - 만료 시간까지 상태 정보 유지
만료 시간까지 쿠키의 정보는 유지됩니다. 또한 만료시간은 서버가 쿠기를 만드는데 설정가능합니다.
3. 🍪 쿠키를 사용하는 이유
웹 사이트 재방문 시 효율적으로 서비스를 제공하기 위해서 입니다.
- 만약 여러분이 네이버를 로그인하고 실수로 인터넷을 끄고 다시 켰는데 로그인이 풀려있다면?
- 장바구니에 온갖 물건들을 몇시간에 걸쳐서 담아놓았는데 실수로 창을 닫고 다시 켰는데 전부 날라갔다면?
- 팝업창이 하루종일 사이트 들어갈때마다 계속 나온다면?
쿠키가 있기에 위와 같은 일이 일어나도 정보가 유지되고있습니다.
❗️ 쿠키의 동작 방식
<출처 : 베스핀글로벌 테크센터 블로그>
- 클라이언트가 페이지를 요청
- 서버에서 쿠키 생성
- HTTP 헤더에 쿠키를 포함 시켜 응답
- 브라우저가 종료되어도 쿠키 만료 기간이 있다면 클라이언트에서 보관하고 있음
- 같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보냄
- 서버에서 쿠키를 읽어 이전 상태 정보를 변경 할 필요가 있을 때 쿠키를 업데이트 하여 변경된 쿠키를 HTTP 헤더에 포함시켜 응답
하지만 여기에는 단점이 존재합니다.
4. 🍪 쿠키의 문제점
만약 여러분의 로그인 정보가 담긴 쿠키가 탈취당한다면 어떻게 될까요? 만약 우리가 쿠키를 임의로 바꾸면 어떻게 될까요?
헤컥다 1 쿠키 값을 임의로 바꿀 수 있습니다. 2. 대신 로그인 할 수 있습니다. 3. 만약 쿠키에 중요한 정보가 있었다면?
해결방법은 없을까요?
5. 세션
쿠키가 탈취당해서 임의로 값을 변경하거나 중요한 정보를 탈취당하는 것을 방지하기 위한 방법중 하나는 세션을 사용하는 것 입니다.
세션이란?
- 웹 사이트에 이용되는 사용자 정보를 서버에 저장하는 방법입니다.
- 쿠키를 기반으로 하고 있지만, 사용자 정보파일을 브라우저에 저장하는 쿠키와 달리 (웹사이트)서버측에서 관리합니다.
- 서버에서는 클라이언트를 구분하기 위해 세선 ID를 부여하여 웹 브라우저가 서버에 접속해서 브라우저를 종료할 때 까지 인증상태를 유지합니다.
- 사용자에 대한 정보를 서버에 두기 때문에 쿠키보다 보안에 좋지만 사용자가 많아질 수록 서버 메모리를 많이 차지 합니다.
🎾 쿠키 + 세션 동작 방식
<출처: 베스핀글로벌 테크센터 블로그>
- 클라이언트가 서버에 접속 시 세션 ID를 발급 받음
- 클라이언트는 세션 ID에 대해 쿠키를 사용해서 저장하고 가지고 있음
- 클라이언트는 서버에 요청할 때, 이 쿠키의 세션 ID를 같이 서버에 전달해서 요청
- 서버는 세션 ID를 전달 받아서 별다른 작업없이 세션 ID로 세션에 있는 클라언트 정보를 가져와서 사용
- 클라이언트 정보를 가지고 서버 요청을 처리하여 클라이언트에게 응답
💿 세션 방식 단점
- 유저 정보가 서버에 있기 때문에 처리 속도에 대한 비용 발생
- 서버 자원을 사용하기 때문에 유저가 많아지면 저장 공간에 대한 비용 발생
📌 쿠키와 세션의 차이점
🍪 쿠키(Cookie) vs 세션(Session)
쿠키 Cookie세션 Session
📚 Reference
'CS' 카테고리의 다른 글
CORS / SOP (1) | 2024.02.04 |
---|---|
로드 밸런싱 (0) | 2024.01.21 |
DNS / 웹 통신 흐름 (3) | 2024.01.13 |
OSI 7 계층 (2) | 2024.01.07 |