CSRF to niedoceniany błąd, który może doprowadzić do nieświadomego wykonania jakiejś akcji przez zalogowanego użytkownika – chociażby stworzenia nowego konta administratora. Dzisiaj w #od0dopentestera wytłumaczę jak działa ten mechanizm.
Przesyłając dane do strony zazwyczaj używamy formularza. Serwer odpowiednio procesuje wysłane przez nas informacje i na ich podstawie wykonuje daną akcję. Ale nic nie stoi na przeszkodzie, żeby ten sam formularz umieścić na jakiejś innej stronie – nie powiązanej z tą, do której przesyłamy dane.
@KacperSzurek: to trochę nie do końca jest tak z CSRF
Stąd też atakujący może dla przykładu umieścić formularz mający za zadanie stworzyć nowego administratora na swojej stronie a następnie musi przekonać nas, abyśmy będąc zalogowanymi odwiedzili jego witrynę. Wtedy to dane z formularza zostaną automatycznie przesłane razem z naszym ciasteczkiem – a ponieważ, byliśmy zalogowani – serwer wykona żądaną akcję.
Po pierwsze ludzie tak jak w przypadku fałszywych linków w banku
Co ma sesja w PHP, ciastku, SSL i same-origin policy do opisanego przypadku, kiedy w formularzu w action wpisujesz adres serwera i request idzie do niego? Gdzie nawet użytkownik o tym nie musi wiedzieć bo wchodząc na stronę można zrobić w javascripcie kliknięcie na submit, gdzie nastąpi przekierowanie do strony docelowej postem bez tokenu w formularzu :)
@sanglier: Coś w tym jest - mój dobry znajomy całe życie na etacie pracował, przeszedł niedawno na B2B i co miesiąc regularnie przeżywa to, że dostaje przelew na 12k a w kieszeni zostaje mu 8k ;D (VAT, CIT, ZUS)
Dzisiaj w #od0dopentestera wytłumaczę jak działa ten mechanizm.
Przesyłając dane do strony zazwyczaj używamy formularza.
Serwer odpowiednio procesuje wysłane przez nas informacje i na ich podstawie wykonuje daną akcję.
Ale nic nie stoi na przeszkodzie, żeby ten sam formularz umieścić na jakiejś innej stronie – nie powiązanej z tą, do której przesyłamy dane.
Po pierwsze ludzie tak jak w przypadku fałszywych linków w banku
Co ma sesja w PHP, ciastku, SSL i same-origin policy do opisanego przypadku, kiedy w formularzu w action wpisujesz adres serwera i request idzie do niego? Gdzie nawet użytkownik o tym nie musi wiedzieć bo wchodząc na stronę można zrobić w javascripcie kliknięcie na submit, gdzie nastąpi przekierowanie do strony docelowej postem bez tokenu w formularzu :)