Django

Chapter 3-4 Django에서의 쿠키와 세션 이해 및 실습

Chansman 2025. 5. 6. 17:47

🍪 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️⃣ 쿠키 확인 방법 🔍

  1. 서버 실행 후 브라우저 접속 → blog_list 페이지로 이동
  2. 개발자 도구 (F12) → Application 탭 → Cookies 확인
  3. 새로고침할 때마다 visits 값이 증가

📷 예시 이미지:


6️⃣ 세션은 어디에 저장될까?

Django는 기본적으로 세션을 데이터베이스에 저장합니다.

📌 request.session['count'] 에 값이 추가되면,
→ Django가 자동으로 sessionid 쿠키를 생성하고 이를 통해 사용자를 추적합니다.

💡 보안상 중요한 정보는 세션에 저장하는 것이 권장됩니다.


✅ 요약 정리

항목쿠키세션
저장 위치 클라이언트 서버
형태 텍스트 객체 (딕셔너리)
보안 취약 강함
용량 제한 있음 (작음) 서버 허용 범위
만료 시점 설정 가능 / 브라우저 종료 시 불명확 (서버 설정)
 

💬 쿠키는 간편하지만 보안에 취약하고, 세션은 보안이 강하지만 서버 자원을 더 많이 사용합니다. 상황에 따라 적절히 활용하세요!