🍪 Django에서의 쿠키와 세션 이해 및 실습
1️⃣ 쿠키와 세션이 필요한 이유
웹에서의 모든 요청은 독립적인 사건입니다.
→ 사용자의 로그인 상태나 방문 횟수 등을 기억하려면 추가적인 저장 방식이 필요합니다.
2️⃣ 쿠키(Cookie)란?
✔️ **클라이언트(브라우저)**에 저장되는 텍스트 기반의 데이터
✔️ 요청마다 서버에 자동으로 전송됨
✔️ 종료 시점 설정 가능 (미설정 시 브라우저 종료 시 삭제)
✔️ 보안에 취약 (민감 정보 저장 ❌)
✔️ 저장 용량 제한: 쿠키 1개당 4KB, 한 도메인당 최대 20개, 총 300개
📦 특징 요약
- 저장 위치: 클라이언트
- 데이터 형태: 텍스트
- 장점: 간편한 설정, 빠른 접근
- 단점: 보안 취약, 저장 용량 제한
3️⃣ 세션(Session)이란?
✔️ 서버에 저장되는 사용자 정보
✔️ 브라우저는 key값(Session ID)만 쿠키 형태로 보관
✔️ 민감한 데이터도 서버에서 안전하게 관리 가능
✔️ 소멸 시점은 명확하지 않음 (서버 설정에 따름)
✔️ 서버 용량이 허용하는 범위 내에서 자유롭게 저장
📦 특징 요약
- 저장 위치: 서버
- 데이터 형태: 객체 (딕셔너리)
- 장점: 보안성 우수, 구조적 저장 가능
- 단점: 서버 자원 소모, 만료 시점 불확실
4️⃣ 블로그 실습: 쿠키와 세션 구현
✅ blog/views.py
from django.shortcuts import render
from blog.models import Blog
def blog_list(request):
blogs = Blog.objects.all()
# 쿠키로 방문 횟수 측정
visits = int(request.COOKIES.get('visits', 0)) + 1
# 세션으로 방문 횟수 기록
request.session['count'] = request.session.get('count', 0) + 1
context = {'blogs': blogs}
# 응답 객체 생성 및 쿠키 설정
response = render(request, 'blog_list.html', context)
response.set_cookie('visits', visits)
return response
5️⃣ 쿠키 확인 방법 🔍
- 서버 실행 후 브라우저 접속 → blog_list 페이지로 이동
- 개발자 도구 (F12) → Application 탭 → Cookies 확인
- 새로고침할 때마다 visits 값이 증가
📷 예시 이미지:
6️⃣ 세션은 어디에 저장될까?
Django는 기본적으로 세션을 데이터베이스에 저장합니다.
📌 request.session['count'] 에 값이 추가되면,
→ Django가 자동으로 sessionid 쿠키를 생성하고 이를 통해 사용자를 추적합니다.
💡 보안상 중요한 정보는 세션에 저장하는 것이 권장됩니다.
✅ 요약 정리
항목쿠키세션
저장 위치 | 클라이언트 | 서버 |
형태 | 텍스트 | 객체 (딕셔너리) |
보안 | 취약 | 강함 |
용량 제한 | 있음 (작음) | 서버 허용 범위 |
만료 시점 | 설정 가능 / 브라우저 종료 시 | 불명확 (서버 설정) |
💬 쿠키는 간편하지만 보안에 취약하고, 세션은 보안이 강하지만 서버 자원을 더 많이 사용합니다. 상황에 따라 적절히 활용하세요!
'Django' 카테고리의 다른 글
Chapter 3-5 Django 로그아웃 기능 만들기 (0) | 2025.05.06 |
---|---|
Chapter 3-5 Django 로그인 페이지 만들기 (0) | 2025.05.06 |
Chapter 3-3 Django 블로그 상세 페이지 만들기 (0) | 2025.05.06 |
Chapter 3-2 Django 블로그 목록 페이지 만들기 (0) | 2025.05.06 |
Chapter 2-8 Django ORM 완전 정복: 데이터 삭제, 업데이트, 필터링 실습 정리 (0) | 2025.04.30 |