Czytałem o używaniu wzorca tokena synchronizatora, aby zapobiec CSRF (CSRF, co oznacza fałszowanie żądań między witrynami). Nie rozumiem, jak to naprawdę jest bezpieczne.W jaki sposób korzysta się ze wzoru tokenu synchronizatora, aby uniemożliwić korzystanie z CSRF?
Powiedzmy mam fałszywą witrynę banku fakebank.com z dwoma adresami:
fakebank.com/withdrawForm.html
- żądanie GET który wyświetla formularz wycofać pieniądzefakebank.com/doWithdraw
- Prześlij do tego adresu URL, aby zrobić to wycofać
Moje rozumienie bezpieczeństwa wada jest to, że można sfałszować maliciousSite.com
żądania POST do fakebank.com/doWithdraw
, a jeśli jesteś aktualnie zalogowany do fakebank Poczta będzie udany.
Załóżmy, że implementujemy wzór tokenu synchronizatora, który utworzy poufny kod na fakebank.com/withdrawForm.html
. Czy nie można sparafrazować żądania GET dla tego formularza, przeanalizować wynik html, pobrać token, a następnie utworzyć żądanie POST z tym tokenem?
Zakłada, że fakebank.com nie sprawdza HTTP Odsyłający lub Origin lub maliciousSite.com
z powodzeniem podszywa się, że Polecający/Początek jest fakebank.com.
Jeśli jesteś w stanie wstrzyknąć javascript do przeglądarki użytkownika w celu rozpoczęcia ataku, co ma na celu zatrzymanie po prostu osadzenia jquery w celu wykonania żądania GET, przeanalizowanie go, a następnie wykonanie POST w ramach tego samego '
I o to właśnie chodzi. Numer Same Origin Policy w przeglądarce nie zezwala na przesyłanie żądań do innych witryn. W związku z tym żadna strona nie może pobrać tokena CSRF od innego, używając tylko JavaScript w przeglądarce.
Źródło
2013-04-17 01:13:42 deceze