Form Web di Asp.net non genera un nuovo ID di sessione se un utente si disconnette e si collega di nuovo

1

I moduli web di Asp.net non generano un nuovo ID di sessione se un utente si disconnette e si riavvia. È questo un grave rischio per la sicurezza? Stiamo utilizzando SSL.

    
posta runners3431 05.05.2016 - 18:01
fonte

3 risposte

1

In ASP.NET è normale che riutilizzi un ID di sessione . Per quanto riguarda i dati memorizzati nella sessione, se si desidera assicurarsi che i dati non siano accessibili una volta che l'utente si è disconnesso, è possibile chiamare Session.Abandon () nella funzionalità di disconnessione. Ma anche se non si chiama Abandon, la sessione non è più vulnerabile di quanto non lo sia quando l'utente ha effettuato l'accesso. L'abbandono semplicemente lo costringe a ripulirlo prima che impieghi una sessione inutilizzata (penso che la il valore predefinito è 20 minuti). È sempre una buona idea chiamare Abandon per impedire il dirottamento di sessione dopo che qualcuno si disconnette e si allontana da un computer condiviso.

    
risposta data 05.05.2016 - 18:56
fonte
0

Dovremmo chiarire una cosa prima di spostarne una:

A seconda della configurazione: gli ID di sessione non sono gli stessi dei dati di sessione

Questo non significa che sia sicuro, ma non significa che non sia sicuro.

Ora lavoriamo attraverso il computer di stato delle sessioni utente durante l'intera transazione e vediamo cosa succede con i dati nella sessione:

La sessione inizia

Il computer passa al servizio web, ottiene la sessione id=X e i dati della sessione vengono archiviati nel DB come id = X, session_data = {"User": null, "IP_address":..., "Mac":..., "Other_device_specific_info":...}

Accesso utente

Gli accessi utente e i dati di sessione nel database vengono aggiornati come UPDATE sessions SET session_data->user = Y WHERE id = X; . La sessione è stata aggiornata per riflettere le modifiche e le modifiche ai permessi, ma non è necessario aggiornare l'ID della sessione perché è la stessa macchina, nella stessa visita .

L'utente fa roba

L'utente fa un po 'di cose e il parametro session_data viene aggiornato di nuovo, impostando altri valori in esso da tracciare.

L'utente si disconnette

Ora l'utente si disconnette e la sessione distrugge i dati, ma mantiene l'id e fa una nuova sessione fresca con lo stesso id perché è la stessa macchina nella stessa visita e ora assomiglia a id = X, session_data = {"User": null, "IP_address":...} che è identica alla sessione originale, non utente.

Un altro utente accede

Ora un altro utente accede e facciamo di nuovo le stesse cose.

Alla fine la persona chiude la finestra / scheda

Poiché l'ID di sessione è stato effimero / scaduto, alla fine verrà distrutto e quindi quando la macchina tornerà a visitare avrà un nuovo ID di sessione.

Come puoi vedere, finché il back-end è stato progettato correttamente, utilizzare lo stesso ID di sessione non è affatto un problema. L'IT (sia esso che IT) sarebbe un problema se gli stessi dati della sessione sono stati riutilizzati.

Le cattive notizie

Tutto presuppone che i dati di sessione e l'ID siano tracciati correttamente e il servizio Web non sia vulnerabile a causa dell'ID di sessione associato alla macchina e non all'utente.

Realisticamente dovrebbe cambiare a un certo punto

Cose da accertarsi di

  • Le sessioni sono configurate in modo sicuro
  • Il flusso di sessione ha senso
  • ID sessione! = Dati sessione
  • I dati della sessione sono archiviati in modo sicuro

Informazioni aggiuntive

  • Le sessioni sono davvero più di un metodo e linee guida per la memorizzazione di informazioni basate sullo stato in qualche luogo
  • Possono essere impostati infinitamente in molti modi sicuri
  • Possono essere impostati infinitamente in molti modi non sicuri
  • Ti stai davvero fidando di qualcun altro per averlo fatto bene quando usi i loro servizi, quindi non ci sono garanzie

Solo perché un ID di sessione è collegato a una macchina e non a un utente, non significa che sia stato impostato in modo errato. Significa solo che probabilmente stanno anche monitorando ciò che gli utenti hanno usato quali macchine, per quanto tempo a scopi metrici.

Cose da prendere in considerazione nel caso

Probabilmente dovresti utilizzare Google questi termini per assicurarti che la configurazione sia sicura

  • Correzione della sessione
  • Attacca gli attacchi
  • Attacchi MITM
  • Connessioni non sicure
  • Sempre Sessioni
  • Sessioni effimere
  • Sessione cookie
  • Sessione database
  • Redis Session
  • App Web stateless
risposta data 05.05.2016 - 18:27
fonte
0

Sì, ciò potrebbe dar luogo a una vulnerabilità per la risoluzione della sessione .

Supponiamo che il tuo sito sia su example.com e consenti agli utenti di caricare le proprie pagine su usercontent.example.com per proteggersi dallo scripting cross-site.

Potresti pensare che i cookie su example.com siano al sicuro da qualsiasi script in esecuzione su usercontent.example.com perché solo-flag-host è impostato di default sui cookie di sessione. Tuttavia, un utente malintenzionato potrebbe eseguire un attacco nel modo seguente:

  1. L'attaccante visita example.com e ottiene un ID di sessione - ne prende nota.

  2. L'utente scarica alcuni contenuti in usercontent.example.com , inclusi alcuni JavaScript per impostare un cookie a example.com level per impostare l'ID di sessione su di lei.

  3. L'autore dell'attacco incita un utente amministratore a example.com a visitare la pagina dell'attaccante su http://usercontent.example.com/evil_page .

  4. Ora l'attaccante e la vittima hanno lo stesso ID di sessione. All'attaccante è stato dato l'ID di sessione dal server, alla vittima è stato dato l'ID di sessione dalla pagina malvagia dell'attaccante.

  5. L'utente malintenzionato attende che la vittima effettui l'accesso a example.com . Poiché il sito non ruota gli ID di sessione, anche l'autore dell'attacco verrà registrato come amministratore.

  6. Voila - un attacco di fissazione della sessione.

Se questo è possibile o meno con l'applicazione dei moduli Web dipende dal fatto che utilizzi l'autenticazione basata su moduli o l'ID sessione per tenere traccia delle sessioni utente. Vedi questa risposta . Autenticazione moduli genera un nuovo token per ogni accesso, quindi non dovrebbe essere vulnerabile. Tuttavia, se Session viene anche utilizzato e considerato attendibile durante l'accesso, questo può anche essere sfruttato da un utente malintenzionato per controllare un amministratore malintenzionato utilizzando la fissazione della sessione, a seconda della funzionalità del sito.

    
risposta data 09.05.2016 - 10:41
fonte

Leggi altre domande sui tag