ESEMPIO 1 ASP - PROTEZIONE PAGINE WEB SEMPLICE

Scenario:

Vogliamo pubblicare delle pagine HTML la cui lettura sia  consentita solo a persone  autorizzate in possesso dell'identificativo utente (User-ID) e la password di accesso.

Setup:

Prepariamo i files e apportiamo le modifiche qui descritte:

1) Nel file global.asa, registrato nella  document root, inseriamo queste linee di codice:

<script LANGUAGE="VBScript" RUNAT="Server">
 Sub Session_OnStart
     Session("login") = False
     Session("user") ="admin"
     Session("passwd") = "ciao"
 End Sub

 </script>

Le variabili di sessione contengono rispettivamente:
Session("user"): l'identificativo utente (User-Id);  Session("passwd"): la password di accesso;
Session("login"): la registrazione che indica se l'utente che sta accedendo al nostro sito si è già autenticato o meno.

2) Creiamo la pagina login.asp che consente all'utente di digitare l'identificativo e la password (operazione di login o autenticazione)

LOGIN.ASP

a video:

<HTML>
<BODY>
<%
   if session("Login") then
      response.redirect "IndiceDocumentiRiservati.asp"
   else
%>

<FORM ACTION=IndiceDocumentiRiservati.asp METHOD=POST>
Utente: <INPUT TYPE=TEXT NAME=USER><BR>
Password: <INPUT TYPE=PASSWORD NAME=PWD><BR>
<INPUT TYPE=SUBMIT VALUE="Accedi">
</FORM>
<%
   end if
%>

</BODY>
</HTML>

  Utente:
  Password:
 

La condizione sul primo IF visualizza la pagina IndiceDocumentiRiservati.asp (indice dei documenti riservati) quando Session("login") vale True altrimenti propone il form di autenticazione.

3) Creiamo la pagina contenente l'elenco dei documenti riservati IndiceDocumentiRiservati.asp. La costruzione di questa pagina è fatta in modo che l'indice risulti leggibile solo a chi ha digitato correttamente lo User-Id e la password.

<HTML>
<BODY>
<%
   user=request.form("USER")
   passwd=request.form("PWD")
   if passwd=session("passwd") and user=session("user") then
      session("Login")=true
   else
      session("Login")=false
      response.redirect "login.asp"
   end if
%>

<h1>Indice dei documenti riservati:</h1>
<A HREF=riservata1.asp>Documento riservato 1</A><BR>
<A HREF=riservata2.asp>Documento riservato 2</A><BR>
...
</BODY>
</HTML>

</BODY>
</HTML>

4) Inseriamo in ogni documento da proteggere da accessi non autorizzati questo segmento di codice ASP:

<HTML>
<BODY>
<%
   if session("Login")=false then
      response.write "Accesso non autorizzato"
      response.end
   end if
%>

...

</BODY>
</HTML>

Pertanto due pagine riservate si presenteranno con una struttura di questo tipo:

RISERVATA1.ASP RISERVATA2.ASP

<HTML>
<BODY>
<%
   if session("Login")=false then
      response.write "Accesso non autorizzato"
      response.end
   end if
%>

<H1>INF RISERVATE SULLO STUDENTE ROSSI MARIO</H1>
1) Studia troppo info<BR>
2) Tralascia Mate
<BR>
3) In classe è uno studente modello
<BR>
...
</BODY>
</HTML>

<HTML>
<BODY>
<%
   if session("Login")=false then
      response.write "Accesso non autorizzato"
      response.end
   end if
%>

<H1>INFO RISERVATE SULLO STUDENTE VERDI MARCO</H1>
1) Info: pochi concetti ma ben confusi<BR>
2) Conosce la vita di Alemanzo Sandroni<BR>
3) In classe è uno studente monello<BR>
...
</BODY>
</HTML>

Demo:

Clicca sul link qui a fianco per visualizzare la demo

Approfondimenti:

I due files Login.asp e IndiceDocumentiRiservati.asp possono essere unificati in un unico file LoginAccesso.asp contenente il seguente codice:

<HTML>
<BODY>
<%
   if session("Login")=false then
      user=request.form("USER")
      passwd=request.form("PWD")
      if passwd=session("passwd") and user=session("user") then
         session("Login")=true
      end if

   end if

   if session("Login") then
%>

<h1>Indice dei documenti riservati:</h1>
<A HREF=riservata1.asp>Documento riservato 1</A><BR>
<A HREF=riservata2.asp>Documento riservato 2</A><BR>
...
<%
   else
%>

<FORM ACTION=loginaccesso.asp METHOD=POST>
Utente<INPUT TYPE=TEXT NAME=USER><BR>
Password<INPUT TYPE=PASSWORD NAME=PWD><BR>
<INPUT TYPE=SUBMIT VALUE="Accedi">
</FORM>
<%
   end if
%>

</BODY>
</HTML>

Dal punto di vista operativo non cambia nulla come si può verificare provando la demo relativa.

Quando la pagina LoginAcces.asp viene richiamata per la prima volta durante una sessione, le variabili Request.Form("USER") e Request.Form("PWD") risultano entrambe valorizzate con "" (stringa nulla). La condizione dell'IF evidenziato in verde risulta quindi falsa e la variabile Session("login"), restando a False, consente la visualizzazione del form di autenticazione.

 

N.B: Una sessione  inizia quando l'utente digita in una finestra del browser l'indirizzo del sito e termina quando quella finestra viene chiusa.