Azienda | Listino | Assistenza | Rinnova servizi | Webmail | Area Utenti
Tel: 055.3031.2626 - info@hostingsolutions.it Rss Feed Twitter Facebook
Cerca un dominio

Protezione di pagine con ASP tramite variabili di sessione

Proteggere aree del vostro sito con ASP non è troppo difficile. Si possono usare a tale scopo le variabili di sessione. L'esempio qui riportato utilizza quattro file:


più tutte le pagine protette (nel nostro esempio solamente inizia.asp). Il principio è piuttosto semplice: verificato il login, viene impostata una variabile di sessione, in particolare session("autorizzato"), che verrà poi controllata in ogni pagina da proteggere. Il controllo avviene tramite il minuscolo script check.asp, che deve essere incluso in tutte le pagine riservate, prima del tag <html>. Tutti i nomi utente e password sono contenuti in un file di testo. Tale file (pasx.txt) in questo esempio, per semplificare, è leggibile in chiaro, ma potete pensare di cifrarlo anche con una vostra particolare funzione.

Un ulteriore grado di protezione può essere introdotto posizionando il file pasx.txt all'interno di una cartella dedicata, e rendendolo inaccessibile alla lettura via web tramite il pannello di controllo sui piani windows. La soluzione che offre maggiori garanzie e flessibilità è quella di conservare le coppie (login,password) in un database, meglio se MS SQL Server o MySql piuttosto che MS Access.

La struttura di pasx.txt è la seguente:

pasx.txt

prova~:~prova
test~:~test
tentativo~:~tentativo

ogni riga del file contiene una coppia (userid,passwd) separata dai caratteri speciali ~:~

login.asp

<%
if session("autorizzato") = 1 then response.redirect("inizia.asp")
invio = request("invio")
if (invio = "invio") then
	userid = request("userid")
	passwd = request("passwd")
	percorsopasx = Server.MapPath("testi/pasx.txt")
	Set oggettoFileSystem = Server.CreateObject("Scripting.FileSystemObject")
	Set oggettoFile = oggettoFileSystem.OpenTextFile(percorsopasx, 1)
	trovato = false
	do while not(oggettoFile.AtEndOfStream) and not(trovato)
		linea = oggettoFile.ReadLine
		if (InStr(linea, userid) > 0) then trovato = true end if
	loop
	oggettoFile.close
	Set oggettoFileSystem = nothing
	Set oggettoFile = nothing
	userdata = split(linea,  "~:~", -1, 1)
	password = trim(userdata(1))
	if ((trovato)  and (passwd = password) ) then
		session("autorizzato") = 1
		response.redirect("inizia.asp")
	else
		response.redirect("destroy.asp")
	end if
else
' HTML %>
<table border="0" cellspacing="0" cellpadding="4" border="0" bgcolor="#FF0000">
  <tr>
    <td>
      <form method=post action="login.asp">
      inserite nome utente e password
        <table width="300" cellpadding="4" cellspacing="1" align="center">
          <tr>
            <td>
              nome utente: 
            </td>
            <td>
              <input type="text" name="userid">
            </td>
          </tr>
          <tr>
            <td>
              password: 
            </td>
            <td>
              <input type="password" name="passwd">
            </td>
         </tr>
         <tr>
            <td colspan="2">
              <input type="submit" name="invio" value="invio">
              &nbsp;&nbsp;
              <input type="reset" name="cancella" value="cancella">
            </td>
         </tr>
       </table>
     </form>
   </td>
  </tr>
</table>
<% 'fine HTML
End if
%>

Lo script login.asp si preoccupa di mostrare all'utente il form di immissione dati (userid e passwd) e di verificare che i valori immessi corrispondano ad una delle coppie presenti nel file pasx.txt. Se l'utente viene riconosciuto, lo script, dopo aver inizializzato la variabile session("autorizzato"), indirizza il browser verso la prima pagina protetta, nel nostro caso inizia.asp, altrimenti richiama lo script destroy.asp che elimina tutto il contenuto della sessione aperta e visualizza un messaggio di errore.

check.asp

<%
if session("autorizzato") <> 1  then response.redirect("destroy.asp")
%>

Una volta attivata la variabile di sessione session("autorizzato"), ogni pagina che includerà lo script check.asp verrà visualizzata senza problemi. Se il login non ha avuto successo, invece, verrà richamato destroy.asp che mostrerà un messaggio di errore.

Tutte le pagine protette dovranno contenere, prima del tag <html>, questa riga di codice:

<!-- #include file="check.asp" --> La sessione viene terminata in due modi: chiudendo il browser, o richiamando lo script destroy.asp.

destroy.asp

<%
session("autorizzato") = -1
Session.Abandon
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML>
<head>
<title> LogOut </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head>
<body>
<h3>Area Riservata - Accesso non autorizzato</h3>
<br>
effettuate il <a href="login.asp">login</a>
</body>
</html>

Gli script mostrati in questo breve esempio non sono completi, e devono essere integrati nelle vostre pagine. Qui di seguito un esempio di pagina protetta dalla variabile di sessione autorizzato:

inizia.asp

<!-- #include file="check.asp" --> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML>
<head>
<title> Pagina di test - ASP login </title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head>
<body>
Esempio: login effettuato con successo
</body>
</html>
[ Hosting Solutions | Copyright © 1999 - 2011 Genesys Informatica Srl. P.iva 02002750483 | Privacy | Regolamentazione | Mappa del sito ]