Programmazione Web » Asp » Proteggere le pagine utlizzando le sessioni
Proteggere le pagine utlizzando le sessioni
Difficoltà:
Scritto da Davide Salonia
Sito Web: http://www.daviduccio.it ![]()
Questo tutorial è stato letto 1167 volte
Salve, oggi vedremo come proteggere le nostre pagine avvalendoci delle Sessioni!
Prima di tutto, vediamo dove e come creare la Sessione di accesso alle nostre pagine protette. La Sessione di accesso, deve essere creata durante il Login dell'utente; più precisamente, se l'utente che cerca di entrare esiste iscritto nei nostri databases, allora avviamo la sessione e diamo così accesso alle pagine protette, altrimenti li indirizziamo in una pagina di errore!
Creiamo adesso un Recordset di esempio che si aggancerà al database e verificherà l'esistenza degli utenti:
Recuperiamo la username e la password inviate con POST :
<% usr=Request.Form("username")
psw=Request.Form("password")
Creiamo la connessione al database:
Set Conn=Server.CreateObject("ADODB.Connection")
strConn="Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/mdb-database/utenti.mdb")
Conn.Open strConn
Creiamo un recordset e selezionamo i campi "usname" e "passw" dalla tabella "tabella_utenti" e filtriamo per username e password richiesti:
sql = "SELECT usname,passw FROM tabella_utenti WHERE usname='"&replace(usr,"'","''")&"' AND passw='"&replace(psw,"'","''")&"'" Set rs = Server.CreateObject("ADODB.Recordset") rs.Open sql, conn ,3,3
Adesso controlliamo che il recordset non sia vuoto, ovvero che username e/o password siano corretti. In caso siano corretti, verremmo indirizzati verso la pagina protetta, in caso contrario invece verso la pagina di errore:
if not rs.BOF then
session("ProtezioneDaviduccioSession")=usr 'Ecco dove abbiamo usato la sessione!
response.Redirect("pagina_protetta.asp")
else
response.redirect("pagina_errore.asp")
end if
%>
Creata dunque la sessione, veniamo reindirizzati verso la pagina protetta, che controllando l'esistenza della sessione, ci permette di visualizzare la pagina, altrimenti ci rispedisce verso la pagina di errore!
Continuiamo quindi creando il codice da inserire nelle pagine da proteggere:
<% if session("ProtezioneDaviduccioSession") = "" then response.redirect("pagina_errore.asp") end if %>
Tutto qui! In questo modo, se il login non viene eseguito perché non esiste l'utente, si viene reindirizzati verso la pagina di errore, in caso contrario, si può tranquillamente visualizzare la pagina!
Bene, siamo arrivati alle conclusioni! Vi siete chiesti perché abbiamo usato il comando replace nel recordset di autenticazione?
La risposta è: per evitare che qualche birbantello, provando a scompigliare la stringa SQL con apici e operatori, riesca ad entrare nelle pagine protette! Questa è una bella chicca, che spesso viene dimenticata, e ci si ritrova con una protezione che non protegge nulla!
Con il comando replace, trasformiamo l'apice in doppio apice, annullando così l'attacco del birbantello, che non può far altro che girare i tacchi e andarsene, o semplicemente registrarsi! ;-)

