Sto lavorando alla verifica della protezione CSRF per una delle nostre applicazioni web. Abbiamo un caso di test come il seguente:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form action="https://webapp.example.com/path/to/page.do" method="post">
<input type="hidden" name="actionTask" value="reject">
<input type="submit" value="Submit request">
</form>
</body>
</html>
Che è una semplice pagina con un campo nascosto e pulsante di invio. Se l'utente ha una sessione valida (è connesso all'app Web), apre questa pagina CSRF e fa clic su "Invia", la richiesta viene inviata e porta l'utente a una pagina dei risultati nell'app Web.
Questa è un'app Web basata su JSP che utilizza JSESSIONID per tracciare la sessione degli utenti (oltre ai cookie per l'autenticazione). Quando rintraccio i metodi HTTP, vedo che Firefox (il browser utilizzato per testare) sta infatti presentando JSESSIONID come una delle intestazioni. In che modo Firefox ottiene il valore corretto per JSESSIONID?
Nota: mi rendo conto che dal momento che Firefox ha un cookie per una sessione valida con l'applicazione, può usarlo. Ma come determina JSESSIONID? Posso accedere e chiudere le finestre del browser e la pagina funziona ancora finché la mia sessione è ancora valida. Sembra che il server stia dicendo al browser qual è il suo JSESSIONID?
edit1: questa domanda non è specifica per CSRF, ma piuttosto semplicemente come il browser determina JSESSIONID quando ha una sessione valida aperta.