Ciao Francesco,
ASP.NET conserva le variabili di sessione lato server quindi l'utente non potrà alterarne i valori. In nessun caso potrà modificare l'ID che gli hai assegnato.
Quando ASP.NET crea una nuova sessione per l'utente, emette un cookie contenente solo un SessionID, che è una stringa alfanumerica generata casualmente.
Il browser restituirà il cookie ad ogni successiva richiesta, ed in questo modo ASP.NET può riconoscere l'utente.
Anche se il cookie di sessione può essere modificato, la sicurezza di questo sistema risiede nel fatto che è praticamente impossibile per un utente indovinare la stringa alfanumerica di qualcun altro per usarla nel proprio cookie.
Detto questo, non dovresti comunque usare le variabili di sessione per proteggere le tue pagine.
- Il cookie di sessione non è persistente e quindi l'utente sarà obbligato a loggarsi di nuovo ad ogni apertura del browser
nelle pagine protette vi è una sub che verifica l'esistenza della sessione
Se per qualche motivo questa sub non va in esecuzione (vuoi per un bug o perché hai dimenticato di eseguirla), allora la pagina sarà aperta anche ad utenti anonimi.
Una soluzione migliore consiste nell'usare la FormsAuthentication, che è integrata in ASP.NET e semplicissima da usare.
Funziona così: al login, dopo aver verificato che username e password sono corretti, emetti un cookie di autenticazione con
questo metodo:
FormsAuthentication.RedirectFromLoginPage(NomeUtente, True)
il "True" sta ad indicare un cookie persistente, che sopravvive alla chiusura del browser.
Fatto questo, le tue pagine saranno automaticamente protette (non devi eseguire alcuna sub) se nel nodo system.web del web.config metti questo:
<authentication>
<forms loginUrl="~/paginaLogin.aspx">
</forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
Vedrai che se provi ad accedere ad una pagina protetta quando sei sloggato, il browser ti reindirizzerà automaticamente alla pagina di login.
Nel nodo
forms indichi il percorso della pagina di login, che sarà l'unica a non essere protetta. Le restanti, saranno inaccessibili dagli utenti anonimi grazie alla direttiva
deny[i] del nodo authorization.
Infine, quando vuoi sloggare l'utente, invoca
questo metodo e il cookie di autenticazione verrà rimosso.
FormsAuthentication.SignOut()
Qui altri articoli per esplorare le altre funzionalità della FormsAuthentication.
http://www.aspitalia.com/focuson/640/Speciale-Forms-Authentication-ASP.NET.aspxciao,
Moreno
Modificato da BrightSoul il 18 marzo 2014 20.08 -