2016-03-07 40 views
5

Używam tagu <csrf/> w moim pliku xml bezpieczeństwa wiosny dla projektu internetowego. Oraz wysyłanie tokena CSRF w formie:Różne tokeny csrf na żądanie w ochronie wiosna

<form action="" method="post"> 
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> 
</form> 

Ale na przechwytywaniu żądania przez BurpSuite otrzymuję taką samą CSRF żeton na każde żądanie do sesji utrzymywać.

Czy istnieje sposób, w jaki mogę wysłać inny token csrf na żądanie niż na sesję w okresie wiosennego zabezpieczenia.

Używam słoików zabezpieczających wiosna.

Odpowiedz

4

Domyślny czas trwania tokenów CSRF to czas trwania sesji. Token CSRF jest przechowywany w sesji HTTP i dlatego jest generowany dla poszczególnych sesji. Aby uzyskać więcej informacji, sprawdź numer Spring Security documentation on CSRF.

Spring Security może być rozszerzony do indywidualnych potrzeb, dzięki czemu może być przedłużony do celu.

Ale to wpływy przedłużające użyteczność:

  1. otwarcia web app w drugiej zakładce spowoduje przerwy sesji w jednym lub w obu kartach.
  2. Przycisk "Wstecz" na przesłanych formularzach może powodować dziwne błędy.
+0

w mojej aplikacji po wylądowaniu w aplikacji internetowej mam dwie zakładki, a dane pierwszej karty będą domyślnie wyświetlane. Ponieważ używam , mogłem zobaczyć token csrf obecny na tej stronie. Jeśli przejdę do tab2, która jest wywołaniem GET, aby uzyskać dane i powrócić do tab1, która ponownie wywołuje GET. Na pierwszej karcie, jeśli klikniesz dowolny przycisk, który wywołuje post w backend. W tym miejscu wywołanie połączenia kończy się niepowodzeniem i otrzymuje błąd 403 z komunikatem "Nie można znaleźć oczekiwanego znacznika CSRF. Każda pomoc tutaj – Kiran

+0

@Kiran, prawdopodobnie trzeba utworzyć nowe pytanie, a nie komentarz. Najprawdopodobniej powinieneś podać jakiś działający kod, aby ludzie mogli pomóc w debugowaniu problemu. –