In ASP.NET, quando dovrei usare Session.Clear () piuttosto che Session.Abandon ()?



Answers

Solo l'uso di Session.Clear () quando un utente si disconnette può creare un buco di sicurezza. Poiché la sessione è ancora valida per quanto riguarda il server Web. Quindi è una questione ragionevolmente banale da annusare e prendere l'Id della sessione e dirottare quella sessione.

Per questo motivo, quando si registra un utente, sarebbe più sicuro e più sensato usare Session.Abandon () in modo che la sessione venga distrutta e creata una nuova sessione (anche se la pagina dell'interfaccia utente di logout sarà parte della nuova sessione, la nuova sessione non avrebbe alcun dettaglio degli utenti e il dirottamento della nuova sessione equivarrebbe ad avere una nuova sessione, quindi sarebbe muto).

Question

Sia Session.Clear () che Session.Abandon () eliminano le variabili di sessione. A quanto ho capito, Abandon () termina la sessione corrente e provoca la creazione di una nuova sessione, provocando l'attivazione degli eventi End and Start.

Sembra preferibile chiamare Abandon () nella maggior parte dei casi, ad esempio la registrazione di un utente. Esistono scenari in cui utilizzare Clear () invece? C'è molta differenza di prestazioni?




Session.Abandon distrugge la sessione come detto sopra, quindi dovresti usarla quando esci da qualcuno. Penso che un buon uso di Session.Clear potrebbe essere per un carrello su un sito di e-commerce. In questo modo il carrello viene cancellato senza disconnettere l'utente.




Related