901. Cross-Site Request Forgery (CSRF) w Django. Czym jest podatność CSRF?

W Django middleware 'django.middleware.csrf.CsrfViewMiddleware' jest odpowiedzialny za ochronę przed atakami typu Cross-Site Request Forgery (CSRF):
    - w przypadku aplikacji korzystających z formularzy HTML ochrona CSRF jest obsługiwana bez żadnej dodatkowej pracy
    - w przypadku API (np. z AJAX), trzeba ręcznie dodać token CSRF do nagłówków żądań.
Middleware:
    1. Automatycznie obsługuje generowanie i weryfikację tokena CSRF (csrftoken).
    2. Zapewnia ochronę przed atakami CSRF, wymagając zgodności między tokenem w ciasteczku i żądaniu.
    3. Jest domyślnie włączony w Django i działa automatycznie, jeśli jest poprawnie skonfigurowany w MIDDLEWARE.

Ale czym jest podatność CSRF?
    - jest to zmuszenie przeglądarki ofiary do wykonania pewnej nieautoryzowanej akcji (wykonania requestu HTTP)
    - to atak na przeglądarkę (a nie część serwerową aplikacji; serwer  traktuje requesty powstałe w wyniku ataku jako legalna komunikacja z przeglądarki)
    - Ofiara wchodzi na spreparowaną stronę www (musi zostać do tego nakłoniona; to częsty wymóg CSRF)

    Przykład:
        - Atakujący będzie chciał zmusić przeglądarkę administratora (wykorzystać podatność CSRF) do zarejestrowania nowego konta.
        - Aby atakujący mógł się zalogować wystarczyłoby jeszcze raz wykorzystać CSRF do wykonania np. requestu usuwającego blokadę na IP użytkownika.
        - Możliwe są tu również: inne tagi (np ładowanie link), auto-submit formularz, JavaScript z AJAX (XMLHttpRequest lub Fetch API).