Przeczytałem o CSRF oraz o tym, jak stosuje się Nieprawdopodobny wzorzec tokena synchronizatora, aby temu zapobiec. Nie bardzo rozumiałem, jak to działa.Jak token zapobiega atakowi csrf?
Weźmy ten scenariusz:
użytkownik jest zalogowany do witryny z tego formularza:
<form action="changePassword" method="POST">
<input type="text" name="password"><br>
<input type="hidden" name="token" value='asdjkldssdk22332nkadjf' >
</form>
Serwer przechowuje również token w sesji. Po wysłaniu żądania porównuje token w danych formularza z tokenem w sesji.
Jak to zapobiec CSRF gdy haker może napisać kod JavaScript, który będzie:
- wysłać żądanie GET do strony
- Otrzymuj tekst HTML zawierającą formularz zgłoszenia.
- Wyszukaj tekst w html dla tokenu CSRF.
- Złóż złośliwą prośbę, używając tokena.
Brakuje mi czegoś?
Warto zauważyć, że możesz wydać pomyślny repozytorium GET również przez iframe, skrypt lub tag obiektu, ale przeglądarka nie pozwoli ci uzyskać załadowanej zawartości dokumentu z JavaScript (protokoły, domeny i porty muszą się zgadzać), – pamelus
dziękuję za odpowiedź – david
Jeśli ktoś się zastanawiał, dlaczego atakujący nie może po prostu pobrać starego tokena z witryny i użyć go w swoim żądaniu, to dlatego, że token jest również przechowywany jako plik cookie w przeglądarce, którego atakujący nie zna. , więc kiedy wysyła żądanie z nowym tokenem, który właśnie dostał z witryny, nie pasuje do tego na cookie użytkownika, a prośba została odrzucona. – T0m