Cross-Site Request Forgery (CSRF)

Cross-Site Request Forgery (CSRF) to podatność, która pozwala atakującemu nakłonić użytkownika zalogowanego w aplikacji do wykonania nieautoryzowanego żądania.

Atak wykorzystuje zaufanie aplikacji do użytkownika, który jest już zalogowany, a przeglądarka automatycznie dołącza tokeny sesji lub ciasteczka do żądań wysyłanych do serwera automatycznie dołącza tokeny sesji lub ciasteczka do żądań wysyłanych do serwera.

Rozwiązaniem tego problemu jest wprowadzenie unikalnych tokenów CSRF generowanych dla każdej sesji użytkownika i wymaganych podczas każdej operacji modyfikującej dane. Token może być przesyłany w formularzach jako ukryte pole oraz weryfikowany po stronie serwera przed przetworzeniem żądania. Token można przesyłać również jako nagłówek HTTP w żądaniach AJAX, czy przechowywać w ciasteczku (cookie) ustawionym przez serwer, a następnie wymagać jego przesłania przez klienta w nagłówku HTTP. Ta metoda jest znana jako Double Submit Cookie.

Weryfikacja, czy nagłówki Referer lub Origin w żądaniu HTTP wskazują na zaufaną domenę aplikacji. Jeśli nagłówek jest pusty lub pochodzi z niezaufanej lokalizacji, żądanie powinno zostać odrzucone.