Antiforgery token (czasem nazywany tokenem CSRF lub tokenem ochrony przed atakiem CSRF - Cross-Site Request Forgery) jest mechanizmem używanym do zabezpieczenia aplikacji internetowych, w tym aplikacji ASP.NET Core Web API, przed atakami CSRF. CSRF to atak polegający na wprowadzeniu użytkownika w błąd i zmuszeniu go do wykonania nieautoryzowanych akcji w aplikacji, nieświadomie wykorzystując jego zalogowaną sesję.

Antiforgery token jest generowany przez serwer i przesyłany do klienta w formie ukrytego pola w formularzu lub jako nagłówek HTTP w odpowiedzi. Następnie klient musi go przesłać z powrotem do serwera w kolejnych żądaniach, co umożliwia serwerowi zweryfikowanie, czy żądanie jest zgodne z tokenem, co pomaga w zabezpieczeniu przed atakiem CSRF. W skrócie, antiforgery token działa w następujący sposób:

  1. Generowanie tokena: Serwer generuje unikalny token dla każdej sesji lub żądania.
  2. Przesłanie tokena do klienta: Token jest przesyłany do klienta, zazwyczaj w postaci ukrytego pola w formularzu lub nagłówka HTTP.
  3. Weryfikacja tokena: Klient przesyła token z powrotem do serwera w każdym żądaniu, które może zmieniać stan aplikacji, np. dodawanie danych lub usuwanie zasobów.
  4. Porównanie tokenów: Serwer porównuje otrzymany token z tym, który został przesłany do klienta. Jeśli tokeny są zgodne, żądanie jest uważane za ważne i jest obsługiwane; w przeciwnym razie może to sugerować próbę ataku CSRF i żądanie jest odrzucane.

Antiforgery token jest ważnym narzędziem w zabezpieczaniu aplikacji internetowych przed atakami CSRF, które mogą prowadzić do nieautoryzowanego wykonywania akcji na koncie użytkownika. W ASP.NET Core, korzystanie z wbudowanej funkcjonalności do generowania i weryfikowania antiforgery tokenów jest stosunkowo proste i jest zalecane przy tworzeniu aplikacji internetowych, w tym ASP.NET Core Web API, które obsługują operacje zmieniające stan.

Materiały

Prevent Cross-Site Request Forgery (XSRF/CSRF) attacks in ASP.NET Core

Using Cookie-Based CSRF Tokens for Your Single Page Application