Wymagana jest polityka tego samego pochodzenia, aby zapobiec CSRF. Wyobraź sobie ten scenariusz:
- Menedżer banku Joe Fatcat ma konto na zapleczu administracyjnym swojego banku. To konto pozwala mu uzyskać dostęp do poufnych informacji o koncie dla każdego, kto korzysta z banku TBtF. Może nawet zresetować czyjś numer PIN, przelać środki, zmienić właściciela konta itp.
- Teraz TBtF Bank odkłada Jacka IT-faceta. Teraz to Jack Dig Digntntled Ex-IT-Guy, a on chce się zemścić na swoim byłym pracodawcy. Jack nie ma dostępu do zaplecza administracyjnego banku, ale wie, że Joe to robi.
- Więc Jack wysyła swojemu szefowi wiadomość e-mail z linkiem do strony utworzonej przez Jacka. Na stronie, tam jakiś JavaScript jak:
var xhr = new XMLHttpRequest(),
data = "from="+victimAccount
+ "&to="+jacksAccount
+ "&amt=a+gazillion+dollars";
xhr.open("POST", "http://tbtfbank.tld/accounts/wiretransfer.aspx", true);
xhr.send(data);
- Następnego dnia Joe przybywa do swojego biura i loguje się do swojego konta administracyjnego jak zawsze robi i pozostawia otwartą kartę w tle.
- Joe widzi e-mail zawierający linki do zdjęć Natalie Portman pokrytych gorącymi kaszami. Więc naturalnie klika na niego, otwierając złośliwą stronę.
- Przeglądarka uruchamia JavaScript na stronie i wysyła żądanie AJAX POST do strony zaplecza administracyjnego TBtF Banku. Ponieważ Joe jest już zalogowany na stronie i ma aktywną sesję, aplikacja bankowa akceptuje polecenie i zarabia miliardy dolarów na zagraniczne konto bankowe Jacka.
I Jack mógł równie dobrze wykorzystać tę samą technikę do zebrania tysięcy numerów kont i pinów lub innych informacji, do których Joe zarządzający bankiem ma dostęp za pośrednictwem swojego konta.
Na szczęście polityka tego samego pochodzenia chroni nas przed tego typu atakami przez większość czasu, ponieważ złośliwa strona Jack'a jest hostowana w innej domenie niż aplikacja banku, nie wolno jej składać do aplikacji bankowej.Mimo że złośliwa strona może nadal zawierać obraz, który wysyła żądanie GET do aplikacji bankowej, ważne jest, aby działania z efektami ubocznymi nie były inicjowane za pomocą żądań GET, a aplikacje sprawdzały nagłówek strony odsyłającej otrzymanych żądań i wykorzystywały Żetony CSRF.
Czy próbowałeś [Wikipedia] (http://en.wikipedia.org/wiki/Same-origin_policy)? –
Tak, nie chcę tego przyznać, ale nadal jestem zakłopotany. I nie mogę znaleźć żadnego jasnego powodu, dla którego ta zasada istnieje. – GK1667
Spróbuj przeczytać o CSRF. Dlatego. – Oded