Aplikacja akceptuje żądanie, ponieważ poświadczenia takie jak ciasteczka są dołączane automatycznie, bez adekwatnego potwierdzenia, że użytkownik zamierzał daną akcję. Wpływ jest ograniczony uprawnieniami użytkownika i podatną operacją.
Obrony powinny odróżniać zamierzone, wewnątrzaplikacyjne akcje od żądań zainicjowanych lub wpływanych gdzie indziej. Ochrona dostarczana przez framework jest preferowana, gdy jej zakres i konfiguracja są zrozumiałe, a wrażliwe akcje mogą też wymagać jawnego ponownego uwierzytelnienia lub potwierdzenia.
Najważniejsze punkty
Integralność żądańUżywaj nieprzewidywalnych tokenów anty-CSRF związanych z sesją użytkownika i waliduj je po stronie serwera przy żądaniach zmieniających stan, lub użyj innego wzorca wspieranego przez framework z równoważnymi właściwościami.
Sygnały przeglądarkiKonfiguruj ciasteczka SameSite odpowiednio i waliduj nagłówki Origin, Fetch Metadata lub oczekiwane nagłówki niestandardowe tam, gdzie odpowiednie; traktuj je jako warstwowe sygnały z udokumentowaną kompatybilnością i zachowaniem proxy.
Projekt przepływu pracyNie pozwalaj nominalnie tylko-odczytowym metodom żądań zmieniać stan, wymagaj bieżącej autoryzacji dla każdej akcji, ograniczaj uprawnienia i czas trwania sesji oraz dodawaj kontrole wzmacniające przy operacjach o wysokich konsekwencjach.
Istotne ograniczenieSameSite ani sama obecność tokenów nie gwarantuje ochrony. Tokeny mogą wyciec, być przewidywalne lub błędnie związane, a cross-site scripting (XSS) w zaufanej aplikacji może pokonać wiele obron CSRF.