La risposta di tim su entropia è perfetta sul tema della forzatura bruta del sessionId.
Ma nota, ci sono modi più semplici per rubare la sessione. Ad esempio, se si rilascia la sessione su HTTPS (autenticazione) ma si torna a HTTP, ora la sessione viene esposta in testo non crittografato. Tutto ciò che va su HTTP può essere assunto è urlato ad alta voce e aperto a tutti coloro che stanno ascoltando sulla linea.
Un attacco mirato può indurre un utente a fare clic su un URL HTTP sul sito Web di destinazione e l'autore dell'attacco intercetta le intercettazioni finché l'utente non fa clic sull'URL e invia la sessione su HTTP. è per questo che dovresti impostare il flag di sicurezza per la tua sessione per assicurarti che non venga inviato a meno che non sia su HTTPS.
È possibile associare la sessione a IP, ma si noti che molti utenti possono condividere lo stesso IP se si trovano dietro un NAT. Quindi non è davvero una grande soluzione di sicurezza.
Anche se hai l'intera sessione su SSL, le vulnerabilità nel browser potrebbero consentire il furto della sessione; Lo scripting di Cross Site può rubare la sessione. Per sicurezza, è necessario correggere tutti questi problemi, ma alla fine della giornata, si supponga che la sessione possa essere rubata e ora pensa cosa?
Una soluzione avanzata per il dirottamento della sessione è un token di sincronizzazione; in questo modo, ogni volta che il browser client effettua una richiesta HTTP sul server, il server invia un nuovo token abbastanza complesso al client come valore del campo modulo nascosto e il client deve inviare questo valore nella richiesta successiva come valore nascosto della forma. Se il client invia la sessione corretta (ad es. Rubata dal cookie), ma non ha il token di sincronizzazione più recente, allora c'è qualcosa di sbagliato. Questa soluzione impedisce anche la contraffazione delle richieste tra siti. Se sei su SSL, questa soluzione non può essere infranta dall'uomo nel mezzo.