Перейти до змісту

Крок 5. Auth і Безпека

Цей крок охоплює два проєкти: crispy_notes_project (Кроки 1–6) та notes_chat_app (Кроки 7–11). Перший — standalone застосунок на SQLite без Docker. Другий — production-like стек з Docker, PostgreSQL, Redis, Group sharing і WebSocket чатом.

Передумови

Перед початком переконайся, що пройдені:


Навчальний проєкт vs Notes Chat App

crispy_notes_project (Кроки 1–6) notes_chat_app (Кроки 7–11)
Запуск python manage.py runserver docker compose up --build
База даних SQLite PostgreSQL (Docker)
Auth Login / Logout / Register / Password Reset Те саме + UserCreationForm auto-login
Session storage Файлова (SQLite) БД (PostgreSQL) через Redis
Group FK Note.group, ShoppingList.group Те саме + ChatMessage.group
Docker Немає PostgreSQL + Redis + Web + Nginx + Selenium
ngrok Немає Так — публічний URL + CSRF_TRUSTED_ORIGINS
WebSocket Немає GroupChatConsumer через Redis

Що ти вивчиш

  • AuthN vs AuthZ — різниця між "хто ти?" і "що тобі можна?", аналогія паспорт/квиток
  • Sessions — як HTTP stateless стає stateful: cookie, django_session, middleware chain
  • Password Security — PBKDF2 з 600 000 ітерацій, Password Reset flow, 4 вбудованих валідатори
  • IDOR — Insecure Direct Object Reference: найпоширеніша вразливість (OWASP A01), як захиститись
  • Group Sharing — Django вбудована модель Group, FK SET_NULL, Q-filter Q(user=u) | Q(group__in=gs)
  • Security Settings — SESSION_COOKIE_HTTPONLY, X_FRAME_OPTIONS, CSRF_TRUSTED_ORIGINS, DEBUG=False

Порядок читання

  1. Auth Basics — паспорт/квиток, AuthN vs AuthZ, authenticate(), login(), middleware chain, Sessions, cookie
  2. Password Security — django.contrib.auth.urls, Password Reset (5 кроків), PBKDF2, validators, Password Change
  3. Object Permissions — IDOR, get_object_or_404, Q-filter для спільних об'єктів, таблиця захищених views
  4. Group Sharing — Django Group, SET_NULL, Q-filter, Services, Views, Templates
  5. Security Settings — таблиця налаштувань, DEBUG=True витоки, HTTPS production settings
  6. Notes Chat App Auth — специфіка notes_chat_app: Docker, DATABASE_URL, реєстрація, URL конфігурація
  7. Checkpoint — чеклист, IDOR test, типові помилки, практичне завдання