L'utilizzo di database e sessioni ASP per implementare la protezione ASP

Traduzione articoli Traduzione articoli
Identificativo articolo: 299987 - Visualizza i prodotti a cui si riferisce l?articolo.
Avviso
╚ vivamente consigliabile che tutti gli utenti eseguire l'aggiornamento per Microsoft Internet Information Services (IIS) 6.0 in esecuzione su Microsoft Windows Server 2003. IIS 6.0 aumenta notevolmente Web protezione dell'infrastruttura. Per ulteriori informazioni su argomenti relativi alla protezione IIS, visitare il sito di Web di Microsoft:
http://www.microsoft.com/technet/security/prodtech/IIS.mspx
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene illustrato come implementare la protezione basata su form per le applicazioni ASP (Active Server Pages). ╚ possibile utilizzare questo meccanismo quando l'applicazione Ŕ protezione avanzata o quando si desidera consentire solo agli utenti autenticati. ╚ inoltre possibile utilizzare questo meccanismo quando gli utenti non sono parte del dominio interno, ad esempio gli utenti di Internet. In questo esempio utilizza un database per memorizzare le informazioni degli utenti e gli utenti in questo database viene quindi convalidato.

Prerequisiti

  • Microsoft Windows NT 4.0 Workstation, Windows NT 4.0 Server, Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server o Microsoft Windows Server 2003
  • Microsoft Internet Information Server (IIS) 4.0 per i computer che eseguono Windows NT 4.0, Microsoft Internet Information Services (IIS) 5.0 per computer che eseguono Windows 2000 o Microsoft Internet Information Services (IIS) 6.0 per i computer che eseguono Windows Server 2003
  • Microsoft SQL Server 6.5 o versione successiva di SQL Server

La progettazione di questa applicazione

Questa sezione vengono descritte brevemente i passaggi necessari per implementare protezione basata su moduli o di protezione personalizzato dell'applicazione Web ASP:
  1. Presentare un form di accesso all'utente.
  2. Convalidare le credenziali utente e le informazioni utente sul memorizzato nel database utente.
  3. Creare una variabile di sessione e impostarne il valore all'ID utente.
  4. Per ogni richiesta successiva che l'utente, verificare che il valore di questa variabile di sessione non sia uguale a una stringa vuota ("") per confermare che l'utente ha eseguito l'accesso.
  5. Se la variabile Ŕ vuota, l'utente non Ŕ un utente valido o l'utente Ŕ disconnesso dalla sessione. Reindirizzare l'utente alla pagina di accesso se la variabile Ŕ vuota.
  6. Se l'accesso ha esito negativo perchÚ l'utente non esiste nel database, l'utente non sia registrato nel sito ancora. Reindirizzare l'utente alla pagina Register.asp in modo che l'utente pu˛ registrazione al sito. Quando l'utente registra, tali informazioni utente vengono aggiunti al database.
  7. Fornire un collegamento la pagina di disconnessione in tutte le pagine tranne la pagina di accesso in modo che l'utente pu˛ accedere dalla sessione. Questa pagina consente di cancellare la variabile di sessione che contiene l'ID utente mediante l'assegnazione di una stringa vuota ("").

Creare una tabella di database utente

  1. Fare clic su Start , scegliere Esegui , digitare notepad nella casella Apri e quindi premere INVIO per avviare il blocco note.
  2. Evidenziare lo script SQL riportato di seguito, lo script fare clic con il pulsante destro del mouse e quindi fare clic su Copia . Nel blocco note scegliere Incolla dal menu Modifica .
    CREATE TABLE [Users] (
    	[uid] [varchar] (25) NOT NULL ,
    	[password] [varchar] (25) NOT NULL ,
    	CONSTRAINT [PK_Users] PRIMARY KEY  CLUSTERED 
    	(
    		[uid]
    	)  ON [PRIMARY] 
    ) ON [PRIMARY]
    GO
    					
  3. Nel menu file , fare clic su Salva . Nella casella nome file , digitare User.txt .
  4. Fare clic su Start , scegliere programmi , quindi Microsoft SQL Server , quindi Query Analyzer . Nella finestra di dialogo Connetti SQL Server , specificare il nome del server che esegue SQL Server, l'ID utente e la password per connettersi a SQL Server.
  5. Nel menu file , fare clic su Apri . Nella finestra di dialogo Apri fare clic tutti i file (*. *) nella casella Tipo file . Fare clic su User.txt nell'elenco e quindi fare clic su Apri .
  6. Nella casella database sulla barra degli strumenti, selezionare il database in cui si desidera creare la tabella. Se non si dispone un database specifico per questo scopo, fare clic su pubs per creare questa tabella nel database pubs di esempio.
  7. Dopo aver selezionato il database, fare clic su esecuzione dal menu query per eseguire la query. Questo passaggio Crea una tabella di utenti del database selezionato.

Creare e configurare la directory virtuale

  1. In Esplora risorse, creare una cartella nella radice Web. Per impostazione predefinita, la directory radice Web Ŕ SystemDrive: \Inetpub\Wwwroot. Nome della cartella ASPSecureAPP.
  2. Aprire Internet Services Manager Microsoft Management Console (MMC).

    Nota In Windows NT 4.0, questo MMC Ŕ denominato Gestione servizio Internet.
    • Per aprire Gestione servizio Internet in un computer che esegue Windows 2000 o Windows Server 2003, fare clic su Start , scegliere Esegui , digitare inetmgr nella casella Apri e quindi premere INVIO.
    • Per aprire Gestione servizio Internet in un computer che esegue Windows NT 4.0, attenersi alla seguente procedura:
      1. Fare clic su Start , scegliere programmi , scegliere Windows NT 4.0 Option Pack , quindi Microsoft Internet Information Server .
      2. Fare clic su Gestione servizio Internet .
  3. Espandere il computer e quindi espandere sito Web predefinito . Fare clic con il pulsante destro del mouse sulla cartella ASPSecureAPP creato nel passaggio 1 e quindi fare clic su ProprietÓ .
  4. Nella scheda Directory della finestra di dialogo ProprietÓ , fare clic su da creare nella sezione Impostazioni applicazione di per contrassegnare la directory di un'applicazione.

Creare le pagine di esempio

Nota Se si utilizza il blocco note per creare queste pagine, assicurarsi di scegliere Tutti I file nella casella Tipo file della finestra di dialogo Salva con nome quando si salvano i file.
Logon.ASP
Questa pagina consente di digitare il nome utente e password per accedere al sito.

Copiare il codice seguente in una nuova pagina ASP. Salvare il file come Logon.asp nella cartella ASPSecureAPP di directory Inetpub\wwwroot.
<%
'The following three lines of code are used to make sure that this page is not cached on the client.
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1
%>
<html><body>
<form action="Validate.asp" method="post">
<P>
Login ID:&#xa0;&#xa0;  <INPUT type=text id=UID  name=UID> <br>
Password:&#xa0;&#xa0;<input type="password" id="passwd" name="passwd"> 
</P>
<input type="submit" value="Logon" id="submit1" name="submit1">
</form>
</body></html>
				
Validate.ASP
Dopo che l'utente fornisce il proprio informazioni di accesso per accedere a un'applicazione, questa pagina convalida le informazioni utente e quindi reindirizza l'utente alla pagina appropriata.

Copiare il codice riportato di seguito in un ASP nuovo pagina. Modificare i parametri di stringa di connessione affinchÚ contengano valori validi. I parametri di stringa di connessione sono i seguenti:
  • ID utente
  • password
  • catalogo iniziale
  • origine dati
Salvare il file come Validate.asp nella cartella ASPSecureAPP di directory Inetpub\wwwroot.
<%
Response.Buffer=true

'The following three lines of code are used to make sure that this page is not cached on the client.
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1

Dim userid
Dim Pwd
'Assign the user ID to this variable. The user provides the user ID.
userid= Request.Form("UID")
'Check whether userid is an empty string. If it is empty, redirect to Logon.asp.
'If it is not empty, connect to the database, and validate the user.

if userid <> "" then
    pwd = Request.Form("passwd")
	
    Dim Cn
    Dim Rs
    Dim StrConnect

'Specify the connection string to access the database.
'Remember to change the following connection string parameters to reflect the correct values
'for your SQL server.
    StrConnect = "Provider=SQLOLEDB.1;User ID=<username>;Password=<strong password>;Initial Catalog=pubs;" & _
    "Network Library=dbmssocn;Data Source=servername"

    Set Cn = Server.CreateObject("ADODB.Connection")
    Cn.Open StrConnect
    Set Rs = Server.CreateObject("ADODB.Recordset")
    Rs.Open "Select * from Users where uid='" & userid & "'",Cn
'Check to see whether this user ID exists in your database.
    If Not Rs.EOF then
        If strcomp( pwd, Rs.Fields("password").value , 1) = 0 then
'Password is correct. Set a session variable, and redirect the user to a Default.asp page
'or the main page in your application.
            Session("UID") = userid
            Response.Redirect "Default.asp"
            Response.End
        Else
'Password is incorrect. Redirect the user to the logon page.
            Response.Redirect "Logon.asp"
            Response.End
        End if
    Else
'If the user is not in your database, point him or her to the Register.asp page
'so that he or she can register at your Web site to access your application.
        Response.Redirect "Register.asp"
        Response.End
    End if
Else
    Response.Redirect "Logon.asp"
    Response.End
End if

%>
				
Register.ASP
Questa pagina consente di registrare i propri ID utente e password per accedere al sito.

Copiare il codice riportato di seguito in un ASP nuovo pagina. Modificare i parametri di stringa di connessione affinchÚ contengano valori validi. I parametri di stringa di connessione sono i seguenti:
  • ID utente
  • password
  • catalogo iniziale
  • origine dati
Salvare il file come Register.asp nella cartella ASPSecureAPP di directory Inetpub\wwwroot.
<%
Response.Buffer=true

'The following three lines of code are used to make sure that this page is not cached on the client.
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1

'Check whether user has submitted user name and password so that you can 
'add that user to the users database and register him or her as a valid 
'user to use this application.
'This is just the minimal code that you need. You can customize this the way you want.
Dim pwd
Dim userid

userid = Request.Form("uname")
pwd = Request.Form("pwd")

If userid <> "" then
    If  pwd <> "" then
        Dim Cn
        Dim Rs
        Dim StrConnect

'Specify the connection string to access the database.
'Remember to change the following connection string parameters to reflect the correct values
'for your SQL server.
        StrConnect = "Provider=SQLOLEDB.1;User ID=<username>;Password=<strong password>;" & _
        "Initial Catalog=pubs;Network Library=dbmssocn;Data Source=servername"

        Set Cn = Server.CreateObject("ADODB.Connection")
        Cn.Open StrConnect
        Set Rs = Server.CreateObject("ADODB.Recordset")
        Rs.Open "Select * from Users where uid='" & userid & "'",Cn,3
        If Rs.RecordCount>0 then
            Response.Write "The Username that you entered has already been taken by someone else."
            Response.Write "Use a different Username."
            Set Rs = Nothing
            Set Cn = Nothing
        Else
            Dim records
            Cn.Execute "INSERT INTO USERS1 (uid,password) VALUES" & _
            "('" & userid & "','" & pwd & "')" , records
            If records=1 then
                Response.Write "You have been registered successfully."
                Set Rs = Nothing
                Set Cn = Nothing
                Session("UID")= userid
                Response.Redirect "Default.asp"
                Response.End 			
            Else
                Response.Write Err.Description
                Set Rs = Nothing
                Set Cn = Nothing
                Response.End 			
            End if
        End if
    Else
    Response.Write "Password is empty. Could not register. Try again."
    End if
End if
%>

<html>
<head>
<script language="javascript">
function callsubmit()
{

if (frm1.pwd.value==frm1.pwdc.value) {
frm1.submit();
}
else
{
alert("Password does not match. Re-enter the password");
}

}
</script>
</head>
<body>
<form action="" method="post" id=frm1 name=frm1>
<P>
Login ID:&#xa0;&#xa0;  <INPUT type=text id=uname  name=uname> <br>
Password:&#xa0;&#xa0;<input type="password" id="pwd" name="pwd"> <br>
Confirm Password:&#xa0;&#xa0;<input type="password" id="pwdc" name="pwdc"> 
</P>
<input type="button" value="Register" id="submit1" name="submit1" onclick=javascript:callsubmit();>
</form>
</body>
</html>
				
Logoff.ASP
Questa pagina consente di disconnettersi.

Copiare il codice seguente in una nuova pagina ASP. Salvare il file come Logoff.asp nella cartella ASPSecureAPP di directory Inetpub\wwwroot.
<%
Response.Buffer=True

'The following three lines of code are used to make sure that this page is not cached on the client.
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1

'Set the session variable to an empty string and also destroy the session to make
'to complete the user session.
Session("UID")=""
Session.Abandon
Response.Redirect "Logon.asp"
Response.End
%>
				
Default.ASP
╚ possibile utilizzare questa pagina per verificare le altre pagine che sono stati creati.

Copiare il codice seguente in una nuova pagina ASP. Salvare il file come default.asp nella cartella ASPSecureAPP di directory Inetpub\wwwroot.
<%
'The following three lines of code are used to make sure that this page is not cached on the client.
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1

if session("UID")="" then 
    Response.Redirect "Logon.asp"
    Response.End
else
    Response.Write "You are logged on as " & session("UID") & "<br>"
end if
%>
<HTML>
<BODY>
<A HREF="Logoff.asp">Click here to log off</A>
<BODY>
</HTML>
				

Aggiungere il codice di convalida alle pagine

Il codice riportato di seguito verifica se l'utente Ŕ giÓ connesso a un sito Web e non Ŕ disconnesso ancora.

Copiare questo blocco di codice in ciascuna delle pagine ASP con protezione avanzata ad eccezione di pagina Logon.ASP e la pagina Validate.asp. Aggiungere questo codice alla pagina Logon.ASP o alla pagina Validate.asp. Assicurarsi che si incolla questo codice all'inizio di ogni pagina in modo che questo codice visualizzata per primo.
<%
'The following three lines of code are used to make sure that this page is not cached on the client.
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1

if session("UID")="" then 
    Response.Redirect "Logon.asp"
    Response.End
end if
%>
				

Funzionamento di questa applicazione

In pratica, questa applicazione presenta due pagine (Logon.ASP e Register.asp) che chiunque pu˛ visualizzare senza fornire le proprie credenziali. Per visualizzare il resto delle pagine, un utente deve accedere con un ID utente valido e una password. Di conseguenza, quando un utente accede direttamente a qualsiasi pagina che richiede le informazioni di accesso, l'utente viene reindirizzato alla pagina Logon.ASP. Gli utenti devono fornire un ID utente valido e una password nella pagina Logon.ASP. Se la password non Ŕ corretto, l'utente pu˛ tentare di riconnettersi.

Se l'ID utente dell'utente e la password non sono presenti nel database, l'utente viene reindirizzato alla pagina Register.asp in cui l'utente pu˛ registrarsi per utilizzare l'applicazione. Quando i registri utente al sito Web tramite il Register.asp pagina, che i dettagli dell'utente vengano immessi nel database utente che si utilizza per convalidare gli utenti.

Risoluzione dei problemi

  • In base ai requisiti e le modalitÓ di protezione l'applicazione Ŕ, Ŕ possibile attivare la crittografia SSL (Secure Sockets Layer) in Logon.ASP per evitare di trasferire le credenziali dell'utente in testo non crittografato.
  • Questi account utente non eseguono il mapping agli account di Windows. Di conseguenza, non Ŕ possibile utilizzare direttamente degli account di Windows per accedere a questa applicazione.
  • Questo meccanismo di protezione utilizza informazioni basate su sessione ASP. Di conseguenza, questo meccanismo non funziona per gli utenti che abilitati i cookie.

Riferimenti

Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
172138Come creare una directory virtuale in Internet Information Services (IIS)
282060Risorse per la protezione di Internet Information Services
299970L'utilizzo di autorizzazioni NTFS per proteggere una pagina Web in esecuzione in IIS 4.0 o 5.0

ProprietÓ

Identificativo articolo: 299987 - Ultima modifica: venerdý 16 giugno 2006 - Revisione: 4.2
Le informazioni in questo articolo si applicano a:
  • Microsoft Active Server Pages 4.0
Chiavi:á
kbmt kbaspobj kbdatabase kbhowtomaster kbsecurity KB299987 KbMtit
Traduzione automatica articoli
Il presente articolo Ŕ stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non Ŕ sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, pi¨ o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non Ŕ la sua. Microsoft non Ŕ responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 299987
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Dichiarazione di non responsabilitÓ per articoli della Microsoft Knowledge Base su prodotti non pi¨ supportati
Questo articolo Ŕ stato scritto sui prodotti per cui Microsoft non offre pi¨ supporto. L?articolo, quindi, viene offerto ?cosý come Ŕ? e non verrÓ pi¨ aggiornato.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com