Durante lo sviluppo di un'applicazione jsp / servlet vulnerabile, ho tentato di introdurre la vulnerabilità della fissazione della sessione.
In riferimento alla documentazione sono arrivato con il seguente codice che, se usato nel servlet per creare una nuova sessione, dovrebbe restituire la sessione HTTP esistente se esiste e altrimenti dovrebbe restituire null. In ogni caso non dovrebbe essere creata una nuova sessione.
if(obj.checkLogin(username, password))//if credentials are valid
{
HttpSession session = request.getSession(false);//return the existing session
if(session != null)
response.sendRedirect("LoginSuccess.jsp");
else
response.sendRedirect("error.jsp");
}
Per testare il codice l'ho distribuito usando tomcat 7 e testato per la fissazione della sessione:
- Osserva il cookie (
c1
) quando viene caricata la pagina di accesso (utilizzando un proxy di intercettazione) - Inserisci le credenziali corrette nel modulo di accesso. L'autenticazione ha avuto successo e sono stato reindirizzato a LoginSuccess.jsp
- Osserva il cookie (
c2
) dopo l'autenticazione.
Ho trovato che i cookie c1
e c2
sono diversi. Il che implica che il codice non sia vulnerabile alla fissazione della sessione. Sto avendo problemi a capire questo comportamento. Perché il cookie originale c1
non rimane dopo l'autenticazione?