http://www.vessella.it Karibu!
Appunti di programmazione

INDICE

ITALIANO
Copertina
Il topo e il mouse
L'esperanto
Vocabolario esperanto
Vocabolario swahili
Il swahili
Alcuni filmati sulla Tanzania

Scuola
Questionari in inglese

Programmazione
Archivi Access e FrontPage
Gestione Archivi con le funzioni di FrontPage
Proteggere un sito in ASP (I)
Proteggere un sito in ASP (II)
Contatore e Statistiche
Utilizzare CDONTS (provvisorio)
Le date in ASP e SQL
Connessione a un archivio Access
Configurazione di una rete (PDF)
Criteri di protezione (PDF)
Esperanta Klavaro en EeePC kun originala Xandros

ESPERANTO
Koverto
Vortaro itala
Vortaro suahila
La suahila lingvo
Videokasedoj pri Tanzanujo

KISWAHILI
Jalida
Kamusi ya kiesperanto
Lugha ya Kiesperanto
Azimio la Praha
Video juu ya Tanzania

ENGLISH
Home
The Esperanto language
The Swahili language
Some videos on Tanzania

Protezione di siti con codice di accesso (Password)

Articolo di Rob Taylor
trovato in www.4guysfromrolla.com
tradotto e variamente modificato da Nino Vessella


Questo é un sistema di protezione che permette la lettura delle pagine di un sito solo ai visitatori autorizzati, infatti se un visitatore cerca di leggere una qualsiasi pagina protetta viene invitato a "farsi riconoscere".
(Se volete provare una versione migliorata di questo sistema, visitate la pagina Esercizi di Inglese tecnico.)

Il metodo proposto usa la coppia di dati indirizzo/codice. Le informazioni possono essere memorizzate in un file di testo o in un archivio Access (.mdb). Per motivi di sicurezza é importante nascondere questo archivio, altrimenti é facilmente scaricabile. (Vedi: FrontPage e Database)

Il metodo presuppone una struttura del sito di questo tipo:

  • /dominio
    • /fpdb
    • /kinga
    • /altrecartelle
      • paginaprotetta.asp
  • paginaprotetta.asp

Nella cartella in /fpdb l'archivio .mdb dei visitatori autorizzati, in /kinga le pagine di protezione descritte qui. Le pagine protette (paginaprotetta.asp) possono trovarsi ovunque.

Per il file di testo il metodo usa il FileSystemObject.

La prima pagina é un normale modulo d'iscrizione che chiede l'indirizzo di posta elettronica del visitatore e il suo codice.

Registrazione

cdEntra.asp


<%=session.abandon
nPagina=Request.QueryString("pag")
%>

<html>
<head>
<title>Protezione sito</title>
</head>
.
.
.
                

La prima linea azzera tutte le variabili della sessione. Bisogna inserirla prima del codice <HTML>.
La pagina protetta, come si vedrá piú avanti, passa il suo URL a cdEntra, che lo memorizza nella variabile nPagina l'URL della pagina protetta. Questa variabile servirá in seguito per ritornare alla pagina protetta, che cosí non deve essere necessariamente nella stessa cartella in cui si trovano i codici di protezione e quindi puó trovarsi in qualsiasi cartella del sito.
Poi segue la funzione, kagua():

<SCRIPT TYPE="text/javascript">

<!--
function kagua() {

if (document.entra.cod.value != document.entra.controllo.value)
 { alert('Il codice di accesso non corrisponde!')
   return false;
 } else {
   return true;
 }
}
//-->
</SCRIPT>

Questa funzione confronta le due immissioni di codice, se non corrispondono il visitatore viene rimandato al modulo.

La funzione precede il codice html, come il seguente esempio, del modulo di registrazione:con cui si chiede al visitatore di inserire il codice due volte:.

<body bgcolor= "#ffffff" text= "#000000" >
 <div align=
"center" >
 <center>
  <table border=
"0" width= "600" >
   <tr>
    <td>
      <div align=
"center" >
       <center>
        <table border=
"4" cellpadding= "6" cellspacing= "0" width= "475" >
         <tr>
          <td width=
"100%" bgcolor= "#000000" colspan= "2" >
           <font color=
"#ffffff" face= "Arial" ><strong>
           <IMG height=
32 alt= "kufuli.gif" src= "images/kufuli.gif" width= 32 align= left >
           &nbsp;&nbsp;&nbsp;Sito di Nino Vessella
</strong>
           </font>
          </td>
         </tr>
     <form method= "post" name= "entra" action= "
/kinga/cdkodo.asp" onSubmit= "return kagua()" >
         <tr>
          <td bgcolor=
"#c0c0c0" valign= "top" >
           <div align=
"right"><p><small><font face="Arial">
            <strong>
Indirizzo del visitatore:</strong>&nbsp;
           
</font></small>
            <input name=
"indirizzo"></p>
            <div align=
"right">
             <p>
             <small>
             <font face=
"Arial" >
             <u>
Esempi </u> :&nbsp;nome_123@xxx.it <br>
       cognome@xxxx.it

        </font></small>
             </p>
            </div>
           </div>
           <div align=
"right"><p><small><font face="Arial">
             <strong>
Codice d'accesso:</strong>&nbsp; </font></small>
             <input type=
"password" name="cod" maxlength=10></p>
           </div>
           <div align=
"right"><p><small><font face="Arial">
            <strong>
Verifica Codice d'accesso:</strong>&nbsp; </font></small>
            <input type=
"password" name="controllo"></p>
           </div>
          </td>
          <td width=
"80" bgcolor="#c0c0c0" valign="top" align="middle">
           <div align=
"left">
            <div align=
"center"></div>
            <div align=
"center"></div>
            <div align=
"center">
             <center><p><small><font face=
"Arial">

              <input type="hidden" name="pagina" value="<%=nPagina%>")

              <input type="submit" value="&nbsp;&nbsp;&nbsp;Invia&nbsp;&nbsp;&nbsp;">                                          </font></small></p>
             </center>
            </div>
            <div align=
"center"><center><p>
              <small><font face=
"Arial">
              <input type=
"reset" value="Annulla">
              </small></FONT></p></center>
            </div>
            <div align="center"><center><p>
              <small><font face=
"Arial">
              <input type=
"button" value="Esci" OnClick="history.go(-1)">
</small></FONT></p></center>
            </div>
           </div>
          </td>
         </tr>
         </form>
        </table>
       </center>
      </div>
    </td>
   </tr>
  </table>
 </center>
 </div>
</body>
</html>

Si tratta di un "comune" modulo di inserimento dati. Notare soltanto la variabile nascosta (hidden) pagina per inviare l'URL della pagina protetta al codice successivo e l'azione del bottone Esci che simula il pulsante Indietro del programma di navigazione.
Infine i dati  vengono inviati alla pagina con il codice per la ricerca del visitatore nell'elenco di quelli autorizzati.

Controllo registrazione

cdkodo.asp

In questa pagina innazitutto si inizializzano due variabili di sessione con i valori inseriti nel modulo della pagina cdentra.asp. Una per l'indirizzo di posta elettronica e l'altra per il codice d'accesso dell'utente (visitatore).

 

<%
Session("utente")=request.form("indirizzo")
Session("id")= request.form("cod")
nPagina=request.form("pag")
.
.
.

Poi si cercano i dati inseriti nell'elenco dei visitatori autorizzati. Elenco che puó essere un file di testo oppure un archivio .mdb

I soluzione: File di testo

.
.
.
set oCod = Server.CreateObject("Scripting.FileSystemObject")
set lgFile = oCod.openTextFile(Server.MapPath("codici.txt"))
While not lgFile.AtEndOfStream
 if lgFile.ReadLine=Session("utente") & " " & Session("id") Then 
   lgfile.close
   Response.Redirect "PrimaPagina.asp"
 End If
WEND
Response.Redirect "cdErrato.asp"

%>

I codici vengono cercati in un documento di testo contenuto in una cartella nascosta.

L'elenco dei codici viene letto linea per linea fino a trovare l'indirizzo e il codice del visitatore. Notare che l'istruzione lgFile.ReadLine, che legge ciascuna linea, contiene i caratteri: & " " &. La linea ha il seguente formato: indirizzo, uno spazio, il codice.
Ovviamente l'indirizzo e il codice possono essere separati da qualsiasi numero di spazi. Il codice precedente legge righe con dati separati da un solo spazio.

II soluzione: Archivio .mdb

.
.
.
Dim Conn
Dim oRS
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & _
 Server.MapPath("/fpdb/xxxxx.mdb")
SQL = "Select * From codici"
Set oRS = Conn.Execute(SQL)
while not oRS.EOF
  If session("utente") = oRS("Utente") And session("id") = oRS("Codice") Then
    oRS.Close
    Conn.Close
    Set oRS = Nothing
    Set Conn = Nothing
    Response.Redirect nPagina"
  end if
  oRS.MoveNext
wend
oRS.Close
Conn.Close
Set oRS = Nothing
Set Conn = Nothing
Response.Redirect "/kinga/cderrato.asp"

%>

I codici vengono cercati in un archivio .mdb memorizzato in una cartella nascosta. (Scusate se insisto, ma createla: FrontPage e Database!)

Dopo l'apertura dell'archivio composta da una tabella codici con i campi utente e codice. Viene verificata l'esistenza dei dati inseriti dal visitatore.

In tutti e due i casi, se la ricerca ha buon fine, cioé il codice cercato viene trovato, il visitatore viene indirizzato alle altre pagine del sito con il comando response.redirect PrimaPagina.asp. Altrimenti viene invitato a controllare i dati (response.redirect "cderrato.asp").

Visitatore non autorizzato o dati errati

cdErrato.asp

<!-- #include virtual ="/kinga/cdentra.asp"-->
<%
Response.Write("<center> Hai inserito dati non validi. Per favore riprova.<BR></CENTER>")
%>

Questa pagina contiene solo queste poche righe di codice che scrive un messaggio nel documento cdentra.asp con il comando Response.write. Il messaggio avverte il visitatore che i dati inseriti sono errati e che quindi vanno reinseriti.

Pagina protetta

Ecco, infine la pagina (asp) protetta. Dopo aver inserito i dati corretti, il visitatore viene ammesso alla pagina cercata (in questo caso la prima pagina) nella quale deve essere inserito il seguente codice.  

<%
   If Session("id") = "" Then
      Response.Redirect "/kinga/cdEntra.asp?pag=" & _
        URLEncode("/paginaprotetta.asp")
   End if
%>

<HTML>
<HEAD>
<TITLE>Sito di Nino Vessella</TITLE>
.
.
.

Contenuto della pagina

.
.
.

</HTML>

Il codice deve essere inserito all'inizio di tutte le pagine asp da proteggere. Esso controlla l'accesso alla pagina tramite la variabile di sessione, se é vuota il visitatore non é autorizzato e quindi gli viene presentata la pagina di registrazione cdentra.asp.

Questo codice non permette l'accesso alla pagina senza prima passare per cdentra.asp.

Le sessioni durano 20 minuti, ma questo tempo puó essere cambiato assegnando all'inizio della pagina kdkodo.asp alla variabile session.timeout il valore desiderato (nell'esempio  5 minuti):

session.timeout = 5

Ricordarsi di salvare la lista o l'archivio dei visitatori (indirizzi/codici) in una cartella nascosta diversa da quella delle pagine protette in modo da impedirne il prelevamento.

Se volete provare una versione migliorata (illustrata in Proteggere un sito in ASP (II)) di questo sistema, visitate la pagina Esercizi di Inglese tecnico.

Ultima modifica: 20010301

  Numero di lettori dal 7/12/2000:  


© Nino Vessella , 1996-.
Diritti riservati. Nessuna parte può essere riprodotta, in qualsiasi forma o mezzo, senza citare la fonte.
Ĉiuj rajtoj rezervitaj. Neniu parto povas esti reproduktita, en kiu ajn formo au per kiu ajn metodo, sen mencii ĉi tiun fonton.
Haki zote zimehifadhiwa. Hairuhusiwi kunakili sehemu yoyote bila kuitaja asili yake hii.
All rights reserved. No part may be reproduced, in any form or by any means, without mention of this source.