Cyber Security Academy · Lekcja

Cross-Site Request Forgery (CSRF)

Poznać sposób, w jaki ataki CSRF fałszują uwierzytelnione żądania, oraz dowiedzieć się, jak chronią przed nimi tokeny CSRF i pliki cookie SameSite

Lekcja 3 z 413 kroki

Cross-Site Request Forgery (CSRF) to bezpłatna lekcja Cyber Security Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Cyber Security Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Czym jest CSRF?

Cross-Site Request Forgery (CSRF) nakłania przeglądarkę uwierzytelnionego użytkownika do wykonywania nieautoryzowanych żądań wobec aplikacji internetowej. Przeglądarka automatycznie wysyła pliki cookie wraz z żądaniami, dlatego bez dodatkowych zabezpieczeń serwer nie może odróżnić żądań prawidłowych od sfałszowanych.

Jak działa CSRF

Przebieg:

  1. Ofiara jest zalogowana w bank.com (plik cookie sesji znajduje się w przeglądarce)
  2. Ofiara odwiedza stronę atakującego zawierającą: <img src="https://bank.com/transfer?to=attacker&amount=1000">
  3. Przeglądarka wysyła żądanie GET wraz z plikiem cookie bank.com
  4. Bank realizuje przelew

CSRF z żądaniami POST

CSRF wykorzystujące metodę POST wymaga formularza:

<form action="https://bank.com/transfer" method="POST" id="f">
  <input name="to" value="attacker">
  <input name="amount" value="1000">
</form>
<script>document.getElementById("f").submit()</script>

Tokeny CSRF

Podstawową ochroną jest token CSRF: losowa, tajna wartość przypisana do sesji (lub żądania), umieszczana w formularzach. Serwer weryfikuje token przy każdym żądaniu zmieniającym stan. Atakujący z innej domeny nie może odczytać tokenu (zasada tego samego źródła).

Atrybut SameSite pliku cookie

SameSite=Strict: plik cookie nie jest wysyłany z żadnymi żądaniami między witrynami. SameSite=Lax: plik cookie jest wysyłany podczas bezpiecznych nawigacji najwyższego poziomu (odsyłaczy), ale nie wraz z żądaniami POST z innych witryn. Współczesne przeglądarki domyślnie używają wartości Lax, co znacznie ogranicza ryzyko CSRF.

Wzorzec Double Submit Cookie

Alternatywa dla przechowywania tokenu po stronie serwera: należy ustawić losowy plik cookie CSRF i wymagać, aby został również przesłany jako parametr żądania. Atakujący nie może odczytać pliku cookie (zasada tego samego źródła), więc nie może dopasować go do danych formularza.

Niestandardowe nagłówki żądań

W przypadku żądań AJAX wymaganie niestandardowego nagłówka (np. X-Requested-With: XMLHttpRequest) zapewnia ochronę przed CSRF, ponieważ przeglądarki blokują skryptom między źródłami ustawianie dowolnych nagłówków (wymusza to CORS).

Kiedy tokeny CSRF nie wystarczają

Tokeny CSRF zawodzą, gdy:

  • występuje XSS — atakujący może odczytać token za pomocą JavaScriptu
  • token wycieknie w adresie URL (nagłówek Referer)
  • token jest przewidywalny lub używany ponownie
  • konfiguracja CORS pozwala na korzystanie ze źródła atakującego

Testowanie ochrony przed CSRF

Etapy testowania:

  1. Zidentyfikować żądania zmieniające stan (POST, PUT, DELETE)
  2. Usunąć lub zmodyfikować token CSRF i ponownie wysłać żądanie
  3. Przygotować żądanie formularza między źródłami i sprawdzić, czy się powiedzie
  4. Zweryfikować atrybut SameSite plików cookie sesji

CSRF w interfejsach API

Interfejsy API REST używające formatu JSON są często odporne na CSRF, jeśli:

  • wymagają Content-Type: application/json (formularze HTML nie mogą go ustawić)
  • używają uwierzytelniania opartego na tokenach (nagłówek Authorization, a nie pliki cookie)

Interfejsy API, które akceptują pliki cookie, nadal muszą implementować ochronę przed CSRF.

Współczesny obraz zagrożeń CSRF

W związku z tym, że Chrome, Firefox i Safari domyślnie stosują SameSite=Lax, wiele tradycyjnych ataków CSRF jest blokowanych. Jednak ataki z subdomen oraz niektóre wzorce nawigacji mogą nadal omijać ograniczenia Lax. Aby uzyskać solidną ochronę, należy połączyć SameSite z tokenami CSRF.

Szybkie sprawdzenie: CSRF

Jaka jest podstawowa ochrona przed atakami CSRF w aplikacjach internetowych?

Podsumowanie lekcji

CSRF wykorzystuje automatyczne dołączanie plików cookie przez przeglądarkę do fałszowania uwierzytelnionych żądań wysyłanych ze złośliwych witryn. Podstawową ochroną są tokeny CSRF weryfikowane po stronie serwera. Dodatkową ochroną jest atrybut plików cookie SameSite=Strict/Lax. Interfejsy API używające uwierzytelniania za pomocą tokenów w nagłówkach (a nie plików cookie) są z natury odporne na CSRF. Należy łączyć zabezpieczenia; XSS może ominąć tokeny CSRF, jeśli występuje w aplikacji.

Bezpłatny start

Ucz się Cyber Security Academy dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
76
Lekcje
303

Często zadawane pytania

Czy lekcja „Cross-Site Request Forgery (CSRF)” jest bezpłatna?

Tak — pełny tekst „Cross-Site Request Forgery (CSRF)” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Cyber Security Academy, przejdź na CoddyKit PRO. Kurs Cyber Security Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Cross-Site Request Forgery (CSRF)”?

Poznać sposób, w jaki ataki CSRF fałszują uwierzytelnione żądania, oraz dowiedzieć się, jak chronią przed nimi tokeny CSRF i pliki cookie SameSite Ćwiczysz Cyber Security Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Cyber Security Academy?

Nie wymagamy żadnego doświadczenia. Cyber Security Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Cross-Site Request Forgery (CSRF)”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Cyber Security Academy?

Tak. Każda lekcja Cyber Security Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. SQL Injection: jak i dlaczego działa
  2. Cross-Site Scripting (XSS)
  3. Cross-Site Request Forgery (CSRF)
  4. Błędna konfiguracja zabezpieczeń i ujawnione usługi
← Powrót do Cyber Security Academy