Sessione e ticket di authenticazione

Ma dopo il logout applicativo ci ricordimo della sessione o la lasciamo in balia di se stessa con tutti i dati (pesanti e/o delicati) che essa contiene? Nulla andrebbe dato per scontato e/o lasciato al caso!

Costruiamo la seguente semplice applicazione Web.

  • Configuriamo il nostro web config perchè usi una qualche forma di authenticazione applicativa (mode="Forms") e configuriamo un membership provider (assicuriamoci di avere almeno 2 utenti).
  • Aggiungiamo una pagina "LoginPage.aspx" nella quale trasciniamo un Login Control
  • Aggiungiamo una pagina "Default.aspx" nella quale trasciniamo un textbox, un bottone e un LoginStatus Control.
  • Aggiungiamo il codice qui sotto riportato per completare la "Default.aspx".

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
         TextBox1.Text = (string) Session["Valore"];
     }
}

protected void Button1_Click(object sender, EventArgs e)
{
     Session["Valore"] = TextBox1.Text;
}

Bene siamo pronti. Apriamo il browser e colleghiamoci all'applicazione. Ci viene chiesta la login e noi inseriamo le credenziali del primo utente. Come per magia ci ritroviamo poi - se credenziali corrette - alla Default.aspx. Inseriamo ora un valore nel campo di testo e premiamo il bottone. Quando la pagina ci viene ricaricata il nostro valore sarà stato salvato in sessione. Premiamo ora il "logout" (link button dello StatusControl).

Siamo ancora nelle pagina di login, senza chiudere il browser inseriamo le credenziali del secondo utente. Siamo ancora nella Defaul.aspx: la casella di testo è vuota? Se non è vuota non è che per caso contiene il dato inserito dal primo utente? Questo credo sia male perchè a volte i dati inseriti in sessione potrebbero essere delicati e personali dell'utente!

Credo che sia bene ricordare nella fase di Logut di pulire la sessione perchè il ticket di authenticazione e la sessione del browser sono due cose distinte! Credo che il caso riprodotto sia relativo a situazioni che possono capitare: due o più utenti potrebbero condivide la stessa macchina per lo stesso servizio (applicazione web) e dopo logout non necessariamente chiudono sempre il browser... non è obbligatorio :-p


protected void LoginStatus1_LoggingOut(object sender, LoginCancelEventArgs e)
{
   Session.Abandon();
}
oO0( Quindi 2 conclusioni: 1. nulla va lasciato al caso 2. chiuderò sempre il browser se mi trovo in una situazione di condivisione di macchina per una medesima applicazione - se non conosco chi l'ha sviluppata! )

posted @ sabato 16 giugno 2007 18:16

Print

Comments on this entry:

# re: Sessione e ticket di authenticazione

Left by Lorenzo Barbieri at 16/06/2007 23:02
Gravatar
Authenticazione è veramente da brivido...

# Re: Sessione e ticket di authenticazione

Left by Igor Damiani at 17/06/2007 13:02
Gravatar
ROFTL
Comments have been closed on this topic.
«aprile»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011