> > Articoli
> > Autenticazione Utenti
Creiamo la Sezione Protetta del nostro sito
In molti siti internet vi sarà capitato di notare la classica "AREA RISERVATA",
una sezione il cui accesso è consentito ai soli utenti registrati, possessori
di un NomeUtente e di una Password che permette loro di accedere e interagire
con le pagine presenti in tale sezione. In questo articolo analizzeremo come
creare la nostra area riservata.
Per prima cosa è necessario creare il Database contentente nome utente e password
di tutti coloro a cui è consentito l'accesso nell'area riservata. Creiamo un database
chiamato utenti.mdb; apriamolo e creiamo (tramite la visualizzazione struttura) una
tabella che chiameremo Utenti che conterrà 3 campi:
- ID: sarà la chiave primaria della tabella
- nomeutente: conterrà il nome di ogni utente
- password: conterrà la password relativa ad ogni nome utente
Ecco mostrato ciò che dovreste ottenere:
Figura 1: Struttura del Database.
|
A questo punto inseriamo dei nomi utente e delle password a nostra scelta;
tali dati ci permetteranno di testare successivamente lo script che stiamo realizzando.
Questo primo passo vi sarà utile per prendere confidenza con la creazione dei
database; nel caso siate già esperti o abbiate dei problemi nel realizzare il database
di supporto a questo articolo, potete scaricarlo direttamente cliccando
qui (realizzato con Access2000).
Supponiamo di avere la nostra home page che chiameremo index.asp, con tutti i
suoi contenuti e con, nella posizione in cui preferite, il form che permette
l'accesso all'area riservata; per motivi di semplicità e chiarezza, nella homepage
di questo esempio visualizzeremo solo il form di accesso:
<HTML>
<HEAD>
<TITLE>Autenticazione utente tramite password</TITLE>
</HEAD>
<BODY BGCOLOR=#BBBBFF>
<BR><BR><BR><BR><BR>
<FORM ACTION="login.asp" METHOD="POST">
<TABLE ALIGN=CENTER BORDER=0 BGCOLOR=#000000>
<TR BGCOLOR=#EEEEEE>
<TD WIDTH=150 ALIGN=CENTER>NOME UTENTE</td>
<TD>
<INPUT TYPE=TEXT NAME="nome_utente" SIZE=20>
</td>
</TR>
<TR BGCOLOR=#EEEEEE>
<TD WIDTH=150 ALIGN=CENTER>PASSWORD</td>
<TD>
<INPUT TYPE=PASSWORD NAME="password" SIZE=20>
</TD>
</TR>
<TR BGCOLOR=#EEEEEE>
<TD HEIGHT=30 COLSPAN=2 ALIGN=CENTER>
<INPUT TYPE=SUBMIT NAME="show" VALUE="LOGIN">
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
Come potete notare, il form contiene un campo per l'immissione del nomeutente, uno per l'immissione
della password, e un bottone per inviare i dati alla pagina login.asp che effettuerà
il controllo sui dati inseriti.
E' ora il momento cruciale dell'articolo, cioè la creazione della pagina che controlla nome utente
e password e consente o meno l'accesso all'area riservata. Creiamo un file che chiemeremo login.asp,
eccone il contenuto:
<%
Dim nome_ut
Dim pass
nome_ut = Replace(Request.Form("nome_utente"), "'", "''")
pass = Replace(Request.Form("password"), "'", "''")
Dim cn
Set cn = Server.CreateObject("ADODB.Connection")
cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("utenti.mdb")
Dim sql
sql = "SELECT ID FROM Utenti WHERE NOMEUTENTE='" &nome_ut&_
"' AND PASSWORD='" &pass& "'"
Dim rs
Set rs = cn.Execute(sql)
Dim autenticato
if rs.eof then
autenticato = false
else
autenticato = true
end if
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
if autenticato = true then
Session("Autenticato") = "OK"
Response.Redirect("riservato.asp")
else
Response.Redirect("index.asp")
end if
%>
Lo script login.asp raccoglie nome_utente e password provenienti dalla form della home page e li memorizza
nelle variabili nome_ut e pass. Da notare che gli eventuali apici (') immessi nella form vengono sostituiti
con un doppio apice (''); questo è un passaggio molto importante e necessario se si vogliono evitare
spiacevoli inconvenienti nella regolare esecuzione dello script; gli apici infatti possono causare
degli errori nella corretta composizione della stringa sql che utilizzeremo per interrogare il database.
Successivamente viene composta la stringa sql, che cerca nel database un record che abbia nome utente
e password corrispondenti a quelli immessi nella form.
Se il recordset risultante è vuoto, significa
che nel database non è stata trovata la corrispondenza delle due variabili e quindi l'utente non è
autenticato; nel caso contrario, l'utente è presente nel database, ed ha inserito la password corretta.
Nel primo caso, il navigatore viene reindirizzato alla home page; nel secondo caso, invece, l'utente viene
inviato alla pagina riservato.asp e, punto molto importante, viene creata una variabile di sessione
chiamata Autenticato, a cui viene assegnata la stringa "OK". Questa variabile è importante, in quanto
ad ogni accesso ad una pagina dell'area riservata (durante la medesima sessione), verrà verificata la sua
presenza; nel caso essa non sia presente o non abbia valore "OK", il navigatore verrà reindirizzato
alla pagina index.asp. Tutto ciò può apparire una futile precauzione, ma supponiamo che un navigatore
"malintenzionato" venga a sapere che la pagina riservata del nostro sito ha come URL:
http://www.miosito.com/riservato.asp
A questo punto, per scavalcare la protezione, gli basterebbe andare direttamente a tale URL senza
passare attraverso la home page del nostro sito, e la nostra "barriera" risulterebbe perfettamente
inutile. Controllando invece, ad ogni pagina dell'area riservata, la presenza della variabile di sessione
Autenticato, la protezione non potrà essere oltrepassata.
In seguito è riportato il codice di riservato.asp:
<%
if Session("Autenticato")<>"OK" then
Response.Redirect("index.asp")
end if
%>
<HTML>
<HEAD>
<TITLE>Area riservata</TITLE>
</HEAD>
<BODY BGCOLOR=#BBBBFF>
<BR><BR><BR><BR><BR>
<DIV ALIGN=CENTER><H1>PAGINA RISERVATA</H1><BR>
<H2>UTENTE AUTENTICATO</H2><BR></DIV>
</BODY>
</HTML>
Questa sarà la sezione riservata del vostro sito; nella parte iniziale viene verificata la presenza
della variabile di sessione che indica se l'utente ha effettuato il login o meno. Il resto della pagina
potrà essere modificato secondo le vostre esigenze.