Utjecaj
Cross-Site Request Forgery (CSRF) omogućuje napadaču da prevari žrtvin preglednik da izvrši neželjene radnje na drugoj web stranici na kojoj je žrtva trenutno autentificirana. Budući da preglednici automatski uključuju ambijentalne vjerodajnice poput kolačića u zahtjeve, napadač može krivotvoriti operacije promjene stanja — poput mijenjanja lozinki, brisanja podataka ili pokretanja transakcija — bez znanja korisnika.
Glavni uzrok
Temeljni uzrok CSRF-a je zadano ponašanje web-preglednika slanja kolačića povezanih s domenom kad god se uputi zahtjev toj domeni, bez obzira na podrijetlo zahtjeva [S1]. Bez posebne provjere da je zahtjev namjerno pokrenut iz vlastitog korisničkog sučelja aplikacije, poslužitelj ne može razlikovati legitimnu radnju korisnika od krivotvorene.
Django CSRF zaštitni mehanizmi
Django pruža ugrađeni obrambeni sustav za ublažavanje ovih rizika kroz integraciju međusoftvera i predloška [S2].
Aktivacija međuprograma
django.middleware.csrf.CsrfViewMiddleware je odgovoran za CSRF zaštitu i obično je omogućen prema zadanim postavkama [S2]. Mora se postaviti prije bilo kojeg međuprograma za prikaz koji pretpostavlja da su CSRF napadi već obrađeni [S2].
Implementacija predloška
Za sve interne POST obrasce, programeri moraju uključiti oznaku {% csrf_token %} unutar <form> elementa [S2]. Ovo osigurava da je jedinstveni, tajni token uključen u zahtjev, koji poslužitelj zatim provjerava u odnosu na sesiju korisnika.
Rizici curenja tokena
Važan detalj implementacije je da {% csrf_token %} nikada ne bi trebao biti uključen u obrasce koji ciljaju vanjske URL-ove [S2]. Time bi tajni CSRF token procurio trećoj strani, što bi potencijalno ugrozilo sigurnost korisnikove sesije [S2].
Obrana na razini preglednika: SameSite kolačići
Moderni preglednici uveli su atribut SameSite za zaglavlje Set-Cookie kako bi pružili sloj obrane u dubini [S1].
- Strogo: Kolačić se šalje samo u kontekstu prve strane, što znači da web mjesto u URL traci odgovara domeni kolačića [S1].
- Lax: Kolačić se ne šalje na podzahtjeve između stranica (kao što su slike ili okviri), ali se šalje kada korisnik navigira do izvorne stranice, kao što je praćenjem standardne veze [S1].
Kako FixVibe to testira
FixVibe sada uključuje CSRF zaštitu kao zatvorenu aktivnu provjeru. Nakon verifikacije domene, active.csrf-protection pregledava otkrivene obrasce koji mijenjaju stanje, provjerava ulaze u obliku CSRF-tokena i signale kolačića SameSite, zatim pokušava slanje krivotvorenog porijekla s malim utjecajem i izvješćuje samo kada poslužitelj to prihvati. Provjere kolačića također označavaju slabe atribute SameSite koji smanjuju dubinu CSRF obrane.
