DetailPage-MSS-KB

Knowledge Base

Artikel-ID: 299987 - Geändert am: Dienstag, 5. September 2006 - Version: 5.1

 
Dieser Artikel wurde zuvor veröffentlicht unter D299987
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
299987  (http://support.microsoft.com/kb/299987/EN-US/ ) How to use database and ASP sessions to implement ASP security
Hinweis
Microsoft empfiehlt allen Benutzern nachdrücklich, auf Microsoft Internet Information Services (IIS) 6.0 unter Microsoft Windows Server 2003 zu aktualisieren. IIS 6.0 erhöht die Sicherheit der Web-Infrastruktur beträchtlich. Weitere Informationen zu sicherheitsrelevanten Themen im Zusammenhang mit IIS finden Sie auf folgender Microsoft-Website:
http://www.microsoft.com/technet/security/prodtech/IIS.mspx (http://www.microsoft.com/technet/security/prodtech/IIS.mspx)
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.

Auf dieser Seite

Zusammenfassung

Dieser Artikel beschreibt Schritt für Schritt die Implementierung formularbasierter Sicherheit bei ASP-Anwendungen (ASP = Active Server Pages). Sie können diesen Mechanismus verwenden, wenn Ihre Anwendung erhöhte Sicherheit verwendet oder wenn Sie nur authentifizierte Benutzer zulassen möchten. Sie können diesen Mechanismus auch verwenden, wenn die Benutzer nicht Ihrer internen Domäne angehören, wie zum Beispiel Internetbenutzer. In diesem Beispiel werden die Benutzerinformationen in einer Datenbank gespeichert. Anschließend wird der Benutzer anhand dieser Datenbank überprüft.

Voraussetzungen

  • Microsoft Windows NT 4.0 Workstation, Windows NT 4.0 Server, Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server oder Microsoft Windows Server 2003
  • Microsoft Internet Information Server (IIS) 4.0 für Computer mit dem Betriebssystem Windows NT 4.0, Microsoft Internet Information Services (IIS) 5.0 für Computer mit dem Betriebssystem Windows 2000 oder Microsoft Internet Information Services (IIS) 6.0 für Computer mit dem Betriebssystem Windows Server 2003
  • Microsoft SQL Server 6.5 oder eine höhere Version von SQL Server

Ausgangspunkte des Anwendungsentwurfs

In diesem Abschnitt erhalten Sie einen Überblick über die Schritte, die für die Implementierung der formularbasierten oder benutzerdefinierten Sicherheit in der ASP-Webanwendung erforderlich sind:
  1. Stellen Sie dem Benutzer ein Anmeldeformular bereit.
  2. Überprüfen Sie die Benutzeranmeldeinformationen anhand der Benutzerinformationen in der Datenbank.
  3. Erstellen Sie eine Sitzungsvariable, und legen Sie als Wert die Benutzer-ID fest.
  4. Legen Sie für nachfolgende Anforderungen des Benutzers fest, dass der Wert dieser Sitzungsvariable keine leere Zeichenfolge ("") ist, um sicherzustellen, dass sich der Benutzer angemeldet hat.
  5. Wenn die Variable keinen Wert enthält, ist der Benutzer ungültig oder hat sich bereits von der Sitzung abgemeldet. Leiten Sie den Benutzer zur Anmeldeseite um, wenn die Variable leer ist.
  6. Wenn die Anmeldung fehlschlägt, weil der Benutzer nicht in der Datenbank aufgeführt ist, wurde dieser möglicherweise noch nicht auf der Site registriert. Leiten Sie den Benutzer zur Seite "Register.asp" um, damit er sich auf Ihrer Website registrieren kann. Die Benutzerinformationen werden der Benutzerdatenbank bei der Registrierung hinzugefügt.
  7. Fügen Sie auf allen Seiten außer der Anmeldeseite einen Hyperlink zur Abmeldeseite ein, damit sich der Benutzer von der Sitzung abmelden kann. Diese Seite löscht die Sitzungsvariable mit der Benutzer-ID durch Zuweisen einer leeren Zeichenfolge ("").

Erstellen einer Benutzerdatenbanktabelle

  1. Klicken Sie auf Start und auf Ausführen, geben Sie notepad in das Feld Öffnen ein, und drücken Sie die [EINGABETASTE], um den Editor zu starten.
  2. Markieren Sie das folgende SQL-Skript, klicken Sie mit der rechten Maustaste auf das Skript, und klicken Sie dann auf Kopieren. Klicken Sie im Editor im Menü Bearbeiten auf Einfügen.
     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. Klicken Sie im Menü Datei auf Speichern. Geben Sie im Feld Dateiname den Namen User.txt ein.
  4. Klicken Sie auf Start, zeigen Sie auf Programme, zeigen Sie auf Microsoft SQL Server, und klicken Sie anschließend auf Query Analyzer. Geben Sie im Dialogfeld Verbindung mit SQL Server herstellen den Namen des Servers, der SQL Server ausführt, die Benutzer-ID und das Kennwort zum Herstellen der Verbindung mit SQL Server ein.
  5. Klicken Sie im Menü Datei auf Öffnen. Klicken Sie im Dialogfeld Öffnen im Feld Dateityp auf Alle Dateien (*.*). Klicken Sie in der Liste auf User.txt und dann auf Öffnen.
  6. Wählen Sie im Feld DB auf der Symbolleiste die Datenbank aus, in der Sie diese Tabelle erstellen möchten. Wenn Sie über keine Datenbank für diesen Zweck verfügen, klicken Sie auf Pubs, um die Tabelle in der Beispieldatenbank Pubs zu erstellen.
  7. Klicken Sie nach dem Auswählen der Datenbank im Menü Abfrage auf Ausführen, um die Abfrage zu starten. Mit diesem Schritt erstellen Sie eine Benutzertabelle in der ausgewählten Datenbank.

Erstellen und Konfigurieren des virtuellen Verzeichnisses

  1. Erstellen Sie in Windows Explorer einen Ordner unter dem Web-Stammverzeichnis. Das Web-Stammverzeichnis ist standardmäßig "Systemlaufwerk:\Inetpub\Wwwroot". Geben Sie dem Ordner den Namen "ASPSecureAPP".
  2. Öffnen Sie den Internetdienste-Manager der Microsoft Management Console (MMC).

    Hinweis: In Windows NT 4.0 heißt dieser Manager Internet-Dienst-Manager.
    • Zum Öffnen des Internetdienste-Managers auf einem Computer unter Windows 2000 oder Windows Server 2003 klicken Sie auf Start und auf Ausführen, geben Sie inetmgr in das Feld Öffnen ein, und drücken Sie die [EINGABETASTE].
    • Führen Sie folgende Schritte aus, um den Internet-Dienst-Manager auf einem Computer unter Windows NT 4.0 zu öffnen:
      1. Klicken Sie auf Start, zeigen Sie auf Programme, zeigen Sie auf Windows NT 4.0 Option Pack, und klicken Sie auf Microsoft Internet Information Server.
      2. Klicken Sie auf Internet-Dienst-Manager.
  3. Erweitern Sie Computer und dann Standardwebsite. Klicken Sie mit der rechten Maustaste auf den in Schritt 1 erstellten Ordner ASPSecureAPP, und klicken Sie anschließend auf Eigenschaften.
  4. Klicken Sie im Dialogfeld Eigenschaften auf der Registerkarte Verzeichnis im Abschnitt Anwendungseinstellung auf Erstellen, um das Verzeichnis als Anwendung zu kennzeichnen.

Erstellen der Beispielseiten

Hinweis: Wenn Sie diese Seiten mit dem Editor erstellen, sollten Sie beim Speichern der Dateien sicherstellen, dass Sie im Dialogfeld Speichern unter im Textfeld Dateityp auf Alle Dateien klicken.
Logon.asp
Auf dieser Seite können Benutzer ihren Benutzernamen und ihr Kennwort eingeben, um auf die Site zuzugreifen.

Kopieren Sie den folgenden Code in eine neue ASP-Seite. Speichern Sie die Datei als "Logon.asp" im Ordner "ASPSecureAPP" im Verzeichnis "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
Nachdem die Benutzer ihre Anmeldeinformationen eingegeben und sich bei der Anwendung angemeldet haben, werden die Benutzerinformationen auf der Seite überprüft. Anschließend werden die Benutzer zur entsprechenden Seite weitergeleitet.

Kopieren Sie den folgenden Code in eine neue ASP-Seite. Ändern Sie die Parameter der Verbindungszeichenfolge, damit diese gültige Werte enthalten. Es gibt folgende Parameter der Verbindungszeichenfolge:
  • User ID
  • Password
  • Initial Catalog
  • Data Source
Speichern Sie die Datei als "Validate.asp" im Ordner "ASPSecureAPP" im Verzeichnis "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
Auf dieser Seite können Benutzer ihre Benutzer-ID und ihr Kennwort registrieren, um auf die Site zuzugreifen.

Kopieren Sie den folgenden Code in eine neue ASP-Seite. Ändern Sie die Parameter der Verbindungszeichenfolge, damit diese gültige Werte enthalten. Es gibt folgende Parameter der Verbindungszeichenfolge:
  • User ID
  • Password
  • Initial Catalog
  • Data Source
Speichern Sie die Datei als "Register.asp" im Ordner "ASPSecureAPP" im Verzeichnis "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
Auf dieser Seite können sich die Benutzer abmelden.

Kopieren Sie den folgenden Code in eine neue ASP-Seite. Speichern Sie die Datei als "Logoff.asp" im Ordner "ASPSecureAPP" im Verzeichnis "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
Mit dieser Seite können Sie die anderen von Ihnen erstellten Seiten überprüfen.

Kopieren Sie den folgenden Code in eine neue ASP-Seite. Speichern Sie die Datei als "Default.asp" im Ordner "ASPSecureAPP" im Verzeichnis "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> 				

Einfügen von Überprüfungscode in Seiten

Mit dem folgenden Code wird überprüft, ob der Benutzer bereits bei der Website angemeldet ist und sich noch nicht abgemeldet hat.

Kopieren Sie diesen Codeblock in jede Ihrer ASP-Seiten mit erhöhter Sicherheit außer den Seiten "Logon.asp" und "Validate.asp". Fügen Sie diesen Code nicht in die Seiten "Logon.asp" oder "Validate.asp" ein. Fügen Sie den Code jeweils am Seitenanfang ein, damit er an erster Stelle steht.
 <% '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 %> 				

Funktionsweise dieser Anwendung

Diese Anwendung verfügt im Wesentlichen über zwei Seiten ("Logon.asp" und "Register.asp"), die sich jeder Benutzer ohne Angabe von Anmeldeinformationen anzeigen lassen kann. Wenn ein Benutzer die restlichen Seiten anzeigen möchte, muss er sich mit einer gültigen Benutzer-ID und einem gültigen Kennwort anmelden. Daher wird ein Benutzer, der direkt zu einer Seite navigiert, die Anmeldeinformationen erfordert, an die Seite "Logon.asp" umgeleitet. Der Benutzer muss in der Seite "Logon.asp" eine gültige Benutzer-ID und ein gültiges Kennwort eingeben. Wenn das Benutzerkennwort falsch ist, kann der Benutzer eine erneute Anmeldung versuchen.

Wenn die Benutzer-ID und das Kennwort des Benutzers nicht in Ihrer Datenbank vorhanden sind, wird der Benutzer an die Seite "Register.asp" umgeleitet, wo er sich für die Verwendung Ihrer Anwendung registrieren kann. Wenn sich der Benutzer über die Seite "Register.asp" auf der Website registriert, werden seine entsprechenden Informationen in der Benutzerdatenbank gespeichert, die Sie für die Überprüfung der Benutzer verwenden.

Problembehandlung

  • Je nach den Anforderungen und der Sicherheit der Anwendung können Sie auf der Seite Logon.asp die SSL-Verschlüsselung (Secure Sockets Layer) aktivieren, damit Benutzeranmeldeinformationen nicht im Klartext übertragen werden.
  • Diese Benutzerkonten werden keinen Windows-Konten zugeordnet. Daher können Sie Ihr Windows-Konto nicht für die direkte Anmeldung in dieser Anwendung verwenden.
  • Dieser Sicherheitsmechanismus verwendet auf ASP-Sitzungen basierende Informationen. Daher funktioniert dieser Mechanismus nur bei Benutzern, die Cookies aktiviert haben.

Informationsquellen

Weitere Informationen finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:
172138  (http://support.microsoft.com/kb/172138/DE/ ) Erstellen eines virtuellen Verzeichnisses in Internet Information Services (IIS)
282060  (http://support.microsoft.com/kb/282060/DE/ ) Ressourcen zu dem Sichern von Internetinformationsdienst
299970  (http://support.microsoft.com/kb/299970/DE/ ) SO WIRD'S GEMACHT: Verwenden von NTFS-Sicherheit zum Schützen einer Webseite, die mit IIS 4.0 oder 5.0 ausgeführt wird

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Active Server Pages 4.0
Keywords: 
kbaspobj kbdatabase kbhowtomaster kbsecurity KB299987
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Zurückgezogener KB-ArtikelDisclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.
Freigeben
Weitere Supportoptionen
Microsoft Community-Supportforen
Kontaktieren Sie uns direkt
Zertifizierten Partner finden
Microsoft Store