Le sessioni del browser SSL sono mantenute attive tra le richieste?

14

Quando un client richiede una risorsa Web SSL tramite un browser (ad esempio: una richiesta di accesso) e poi segue con richieste aggiuntive tutte le richieste eseguite nella stessa sessione SSL? O il browser crea e distrugge la sessione con ogni richiesta?

E i server tracciano lo stato della sessione attraverso queste richieste esclusivamente attraverso i cookie crittografati tramite il protocollo SSL o esiste una funzionalità fornita tramite SSL dove i server sanno che la richiesta iniziale proviene dallo stesso browser delle seguenti richieste? Se è solo tramite cookie criptati, cosa significa impedire a qualcuno di falsificare il valore del cookie in qualche modo e fare una richiesta con quel cookie falsificato che impersona così l'utente originale?

    
posta Marcus Leon 10.02.2016 - 22:09
fonte

2 risposte

12

TL; DR: le sessioni HTTP e le sessioni SSL sono entità diverse e non vi è alcuna mappatura da una all'altra.

On the specifics ...

When a client requests an SSL web resource via a browser (ie: a login request) and then follows up with additional requests are all the requests executed in the same SSL session?

Il server o il client possono terminare una connessione SSL, ma, per motivi di prestazioni, le sessioni esistenti vengono riutilizzate quando possibile.

do servers track session state across these requests solely through cookies which are encrypted over the SSL protocol or is there any functionality provided through SSL where servers know that the initial request came from the same browser as the following requests

I cookie sono in genere l'unico meccanismo di manutenzione della sessione quando si comunica con un browser. Le alternative possono essere ID di sessione passati come campi nascosti o sessioni gestite da JavaScript personalizzato esistente nella pagina. In effetti, i client possono multiplexare più sessioni su una singola connessione SSL. L'unica eccezione alle sessioni di multiplexing è quando viene utilizzata la autenticazione reciproca . In questo caso, il client viene autenticato durante l'handshake TLS. Stabilire un'identità non equivale a stabilire una sessione, ma sicuramente sono correlate.

If it's just via encrypted cookies what is to prevent someone from spoofing the cookie value somehow and making a request with that spoofed cookie thus impersonating the original user?

Ti stai riferendo a sequestro di sessione . Alcune strategie utilizzate per prevenire il dirottamento di sessione scelgono un ID di sessione difficile da indovinare (generalmente lungo e casuale è il migliore), solo passando il cookie ID sessione tramite SSL per impedire lo snooping della rete e non consente l'accesso al cookie ID sessione tramite JavaScript . Sfortunatamente, nonostante tutte queste difese, Gestione interrotta dell'autenticazione e delle sessioni continua ad essere il secondo più comune difetto di sicurezza secondo OWASP 2013 Top-10.

    
risposta data 11.02.2016 - 00:28
fonte
9

Le sessioni HTTP e le sessioni TLS sono indipendenti.

HTTP tiene traccia della sessione di solito con i cookie HTTP. Le richieste da una singola sessione HTTP possono essere inviate su più connessioni TLS ciascuna con le proprie sessioni TLS.

La sessione TLS è tracciata con ticket di sessione TLS. Il ticket di sessione tiene traccia dei parametri di crittografia (quale cifra da utilizzare, chiave di sessione, ecc.); i parametri di crittografia sono generalmente associati a una singola connessione TLS, ma TLS può anche riprendere una sessione TLS per creare una nuova connessione TLS con gli stessi parametri di crittografia di una connessione precedente.

Inoltre, se si dispone di un server proxy, può multiplexare più richieste da diversi client in una singola connessione TLS, e questo significa che si può avere più sessioni HTTP in una singola connessione TLS.

When a client requests an SSL web resource via a browser (ie: a login request) and then follows up with additional requests are all the requests executed in the same SSL session? Or does the browser create and tear down the session with each request?

Questa è l'implementazione definita. I programmi utente possono decidere di utilizzare più connessioni TLS e / o sessioni se ritengono che ciò sia vantaggioso per le prestazioni. Il browser moderno in genere apre diverse connessioni TLS per rendere le richieste HTTP / 1.1 contemporaneamente fino a un limite (di solito 4-8 connessioni simultanee), quindi riutilizza le connessioni il più possibile. I browser moderni solitamente utilizzano una singola connessione TLS per le richieste HTTP / 2 in quanto HTTP / 2 supporta la richiesta multiplexing in modo nativo.

And do servers track session state across these requests solely through cookies which are encrypted over the SSL protocol

I server HTTP tracciano solo la sessione HTTP tramite i cookie HTTP. La parte TLS del server Web tiene traccia delle connessioni TLS, ma questo è indipendente dalle sessioni HTTP. Alcuni server Web possono anche utilizzare l'autenticazione reciproca per autenticare l'utente tramite certificato client SSL; e questo può essere usato per tenere traccia della sessione anche se il server è configurato per passare le informazioni sul certificato client nella richiesta HTTP (ad esempio come intestazioni HTTP ).

or is there any functionality provided through SSL where servers know that the initial request came from the same browser as the following requests?

TLS ha ticket di sessione per tenere traccia delle sessioni TLS.

If it's just via encrypted cookies what is to prevent someone from spoofing the cookie value somehow and making a request with that spoofed cookie thus impersonating the original user?

Se un utente malintenzionato può in qualche modo impossessarsi del cookie dal browser dell'utente, sei già fregato.

    
risposta data 11.02.2016 - 02:04
fonte

Leggi altre domande sui tag