Erstellen sicherer ASP.NET- Anwendungen

Ähnliche Dokumente
Erstellen sicherer ASP.NET- Anwendungen

Erstellen sicherer ASP.NET- Anwendungen

Erstellen sicherer ASP.NET- Anwendungen

Erstellen sicherer ASP.NET- Anwendungen

Erstellen sicherer ASP.NET- Anwendungen

Erstellen sicherer ASP.NET- Anwendungen

Erstellen sicherer ASP.NET- Anwendungen

Abbildung 6-8: Abfolge beim doppelten Abschicken von Formularen

Erstellen sicherer ASP.NET- Anwendungen

Installation von Microsoft SQL Server 2014 Express in Verbindung mit Postbuch

Oracle & Java HOW TO

Erstellen sicherer ASP.NET- Anwendungen

Übersicht der wichtigsten MySQL-Befehle

In diesem Anschnitt geht es um die SQL Anweisungen, mit denen ich den Zugriff auf das Datenbankschema steuern kann.

Datenbanken unter J++ - Teil 2

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen

PostgreSQL unter Debian Linux

Schritt 1: Verwenden von Excel zum Erstellen von Verbindungen mit SQL Server-Daten

Firmware-Update MD720-3

Datenbank auf neuen Server kopieren

McAfee epolicy Orchestrator Pre-Installation Auditor 2.0.0

PHP- Umgang mit Datenbanken (1)

WufooConnector Handbuch für Daylite 4

Schritt 1: Verwenden von Excel zum Erstellen von Verbindungen zu SQL Server Analysis Services-Daten

Aufbau und Bestandteile von Formularen. Oracle Forms. Erstellen eines neuen Blocks (1) Starten von Oracle Forms

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Erstellen sicherer ASP.NET- Anwendungen

MySQL, phpmyadmin & SQL. Kurzübersicht

MGE Datenanbindung in GeoMedia

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

Datenbank Anbindung. Arthur Zaczek. Nov 2014

Entwicklungsumgebung für die Laborübung

Erstellen sicherer ASP.NET- Anwendungen

Willkommen. Datenbanken und Anbindung

Erstellen von speziellen Ereignissen in C#

Erstellen sicherer ASP.NET- Anwendungen

TCP/IP Programmierung. C# TimeServer Java6 TimeClient

ODBC-Verbindungen in Oracle-Datenbanken nutzen

Verteidigung gegen SQL Injection Attacks

CargoDocs für Schiffsführer - Benutzeranleitung

Installation MSSQL 2008 Express SP3 auf Windows 8

Konfigurationsspeicher und -tools

Benutzerverwaltung mit ASP.NET Membership

5 Sicherheit und Zugriff auf SQL Server 2008 R2

SQL structured query language

Datenbank und Tabelle mit SQL erstellen

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D.

Praktische Einführung in.net. Kai Stammerjohann

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

PHP MySQL - myphpadmin Formulardaten in eine Datenbank speichern

Whitepaper. Produkt: combit Relationship Manager / address manager. Integration der Ansicht "Adressen" in eigene Solution

KeyPass Passwortverwaltung

Diplomarbeit Webmaster. CONTENTMANAGEMENT Installationsanleitung. Version 1.0

Übung - Planung einer Aufgabe unter Verwendung der GUI und des AT-Befehls in Windows 7

Grundlagen der Informatik 2

OpenVoice. Outlook-Plug-In-Anleitung Citrix Online, UK Ltd. Alle Rechte vorbehalten.

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

Erstellen sicherer ASP.NET- Anwendungen. Kapitel 7 Internetsicherheit

Whitepaper. Produkt: combit Relationship Manager. HowTo: Microsoft SQL Server Datenbank verschlüsseln. combit GmbH Untere Laube Konstanz

Neues System an der BO

Agenda ASP einrichten mit Komfort-Login

Klimagriff Manager Pro

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Installationsanleitung MS SQL Server für Sage 50 Ablage & Auftragsbearbeitung. Sage Schweiz AG D4 Platz 10 CH-6039 Root Längenbold

Datenbanken. Proseminar Objektorientiertes Programmieren mit.net und C# Sebastian Pintea. Institut für Informatik Software & Systems Engineering

Übung - Remote-Desktop und Remoteunterstützung in Windows 7

Ihr Benutzerhandbuch F-SECURE PSB AND SERVER SECURITY

1 DAS KONTAKTE-FENSTER

16 SQL Server-Zugriff per VBA

SCHÄF SYSTEMTECHNIK GMBH 05/10 HANDBUCH

Typo 3 installieren. Schritt 1: Download von Typo3

Entwicklungsumgebung für die Laborübung

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

Installieren und Verwenden des Document Distributor 1

O UTLOOK EDITION. Was ist die Outlook Edition? Installieren der Outlook Edition. Siehe auch:

Datenbank - Teil 3. Ziele: Eine Datenbank anlegen mit SQL. Daten eingeben mit SQL. Abfragen stellen mit SQL und PHP.

Relationale Datenbanken in der Praxis

MySQL, Java und einiges mehr

SinuTrain Language Update Tool V2.6 SP1

Installation KVV Webservices

In dieser Übung wird auf server01 eine Netzwerkfreigabe erstellt und NTFS Berechtigungen festgelegt.

PostgreSQL auf Debian System

Übung 7 DBMS-FUNKTIONALITÄTEN UND DATENIMPORT

IDA ICE - Konvertieren und Importieren von mit TRY_Effekte_aufpraegen.exe erzeugten Datensätzen

Anleitung zur (Version 4)

Einleitung. Abfrage erstellen

Dokumentation zur Anlage eines JDBC Senders

PHP und MySQL. Integration von MySQL in PHP. Zellescher Weg 12 Willers-Bau A109 Tel Michael Kluge (michael.kluge@tu-dresden.

Windows 8. Grundlagen. Markus Krimm. 3. Ausgabe, März 2013

A Datenbanken. A.1 Firebird. A.1.1 Installation des Servers. A.1.2 Installation der Beispieldatenbanken. Datenbanken 1

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Datenbanken erstellen Liste von Datenbanken anzeigen Datenbanken löschen. MySQL 4, 5. Kapitel 06: Datenbanken. Marcel Noe

Erste Schritte mit Desktop Subscription

Administrator-Anleitung

Grundlagen der Informatik 2

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 6

Symantec IT Management Suite 8.0 powered by Altiris technology

Transkript:

Erstellen sicherer ASP.NET- Anwendungen Authentifizierung, Autorisierung und sichere Kommunikation Auf der Orientierungsseite finden Sie einen Ausgangspunkt und eine vollständige Übersicht zum Erstellen sicherer ASP.NET-Anwendungen. Zusammenfassung Nachstehend wird erläutert, wie Sie die Formularauthentifizierung anhand einer SQL Server- Datenbank für Anmeldeinformationen implementieren. Darüber hinaus wird gezeigt, wie Kennwortdigests in der Datenbank gespeichert werden. Vorgehensweise: Verwenden der Formularauthentifizierung mit SQL Server 2000 Webanwendungen, die mit Formularauthentifizierung arbeiten, speichern Benutzeranmeldeinformationen (Benutzernamen und Kennwörter) häufig zusammen mit den zugeordneten Rollen- oder Gruppenlisten in Microsoft SQL Server 2000. Diese Vorgehensweise erläutert, wie Benutzernamen und gültige Kennwörter auf sichere Weise in SQL Server 2000 nachgeschlagen werden können. Für das sichere Speichern von Benutzeranmeldeinformationen gibt es zwei Schlüsselkonzepte: - Speichern von Kennwortdigests. Aus Sicherheitsgründen sollten Kennwörter in der Datenbank nicht im Klartext gespeichert werden. Diese Vorgehensweise erläutert, wie ein unidirektionaler Hash des Benutzerkennworts erstellt und anstelle des eigentlichen Kennworts gespeichert wird. Dieser Ansatz ist dem Speichern einer verschlüsselten Version des Benutzerkennworts vorzuziehen, um die mit Verschlüsselungstechniken einhergehenden primären Verwaltungsprobleme zu vermeiden. Für zusätzliche Sicherheit und um die Bedrohung zu vermindern, die von Verzeichnisangriffen ausgeht, wird bei dem in dieser Vorgehensweise beschriebenen Ansatz vor der Erstellung des Kennworthashs ein Salt, d. h. eine kryptografisch erzeugte Zufallszahl, erstellt und mit dem Kennwort kombiniert. Wichtig: Die Tatsache, dass keine Kennwörter in der Datenbank gespeichert werden, hat den Nachteil, dass das Kennwort nicht wiederhergestellt werden kann, wenn der Benutzer es vergisst. Daher sollte die Anwendung mit "Eselsbrücken" arbeiten, die Hinweise auf das Kennwort geben, und diese zusammen mit dem Kennwortdigest in der Datenbank speichern. 1

- Überprüfen der Benutzereingabe. Wenn die Benutzereingabe an SQL-Befehle übergeben wird, z. B. als Zeichenfolgenliteral in Vergleichs- oder Mustervergleichsanweisungen, sollte in jedem Fall dafür gesorgt werden, dass die Eingabe überprüft wird, um sicherzustellen, dass die sich ergebenden Befehle keine Syntaxfehler enthalten. Hiermit wird zudem sichergestellt, dass ein Hacker keine beliebigen SQL- Befehle in der Anwendung ausführen kann. Die Überprüfung des eingegebenen Benutzernamens während des Anmeldeverfahrens ist ganz besonders wichtig, weil das gesamte Sicherheitsmodell der Anwendung ganz und gar von der Fähigkeit abhängt, Benutzer korrekt und sicher zu authentifizieren. Weitere Informationen zum Überprüfen der Benutzereingabe für SQL-Befehle und zu den Überprüfungsfunktionen finden Sie in Kapitel 12, Datenzugriffssicherheit, im Abschnitt "SQL Injection-Angriffe". Anforderungen Im Folgenden finden Sie eine Liste der empfohlenen Hardware und Software und eine Beschreibung der Netzwerkinfrastruktur, Fähigkeiten und Kenntnisse sowie der Service Packs, die Sie benötigen. - Microsoft Windows 2000 als Betriebssystem - Microsoft Visual Studio.NET als Entwicklungssystem - Microsoft SQL Server 2000 Die in dieser Vorgehensweise erläuterten Verfahren setzen zudem Kenntnisse der Webentwicklung mit dem Entwicklungstool Microsoft Visual C# voraus. Zusammenfassung Diese Vorgehensweise enthält folgende Verfahren: 1. Erstellen einer Webanwendung mit einer Anmeldeseite 2. Konfigurieren der Webanwendung für die Formularauthentifizierung 3. Entwickeln von Funktionen zum Erzeugen eines Hashs und eines Salt-Wertes 4. Erstellen einer Benutzerkontendatenbank 5. Verwenden von ADO.NET zum Speichern von Kontodetails in der Datenbank 6. Authentifizieren von Benutzeranmeldeinformationen anhand der Datenbank 7. Testen der Anwendung 1. Erstellen einer Webanwendung mit einer Anmeldeseite In diesem Verfahren wird eine einfache Webanwendung mit C# erstellt, die eine Anmeldeseite enthält, auf der der Benutzer einen Benutzernamen und ein Kennwort eingeben kann. υ So erstellen Sie eine Webanwendung mit einer Anmeldeseite 1. Starten Sie Visual Studio.NET, und erstellen Sie eine neue C# ASP.NET- Webanwendung mit Namen FormsAuthSQL. 2. Benennen Sie WebForm1.aspx mithilfe des Projektmappen-Explorers in Logon.aspx um. 3. Fügen Sie Logon.aspx die in Tabelle 1 aufgeführten Steuerelemente hinzu, um ein einfaches Anmeldeformular zu erstellen. 2

Tabelle 1: Die Steuerelemente für Logon.aspx Typ des Steuerelements Text ID Bezeichnungsfeld User Name: - Bezeichnungsfeld Password - Textfeld - txtusername Textfeld - txtpassword Schaltfläche Register btnregister Schaltfläche Logon btnlogon Bezeichnungsfeld - lblmessage Die Webseite sollte ähnlich der in Abbildung 1 dargestellten aussehen. Abbildung 1: Webformular Anmeldeseite 4. Legen Sie die TextMode-Eigenschaft von txtpassword auf Password fest. 2. Konfigurieren der Webanwendung für die Formularauthentifizierung Mit dem folgenden Verfahren wird die Datei Web.config der Anwendung bearbeitet, um die Anwendung für die Formularauthentifizierung zu konfigurieren. υ So konfigurieren Sie die Webanwendung für die Formularauthentifizierung 1. Öffnen Sie Web.config im Projektmappen-Explorer. 2. Suchen Sie das <authentication>-element, und ändern Sie das mode-attribut in Forms. 3. Fügen Sie das <forms>-element als untergeordnetes Element des <authentication>- Elements hinzu, und legen Sie die Attribute loginurl, name, timeout und path wie nachstehend gezeigt fest. <authentication mode="forms"> <forms loginurl="logon.aspx" name="sqlauthcookie" timeout="60" path="/"> </forms> </authentication> 4. Fügen Sie das folgende <authorization>-element unterhalb des <authentication>- Elements hinzu. Dies sorgt dafür, dass nur authentifizierte Benutzer auf die Anwendung zugreifen können. Das im Vorfeld eingerichtete loginurl-attribut des <authentication>- Elements leitet nicht authentifizierte Anforderungen auf die Seite Logon.aspx um. 3

<authorization> <deny users="?" /> <allow users="*" /> </authorization> 3. Entwickeln von Funktionen zum Erzeugen eines Hashs und eines Salt-Wertes In diesem Verfahren werden der Webanwendung zwei Hilfsmethoden hinzugefügt, und zwar eine zum Erzeugen eines zufälligen Salt-Wertes und eine weitere zum Erzeugen eines Hashs basierend auf dem übergebenen Kennwort und dem Salt-Wert. υ So entwickeln Sie Funktionen zum Erzeugen eines Hashs und eines Salt-Wertes 1. Öffnen Sie Logon.aspx.cs, und fügen Sie am Anfang der Datei unterhalb der vorhandenen using-anweisungen die folgenden using-anweisungen hinzu. using System.Security.Cryptography; using System.Web.Security; 2. Fügen Sie der WebForm1-Klasse die folgende statische Methode hinzu, um einen zufälligen Salt-Wert zu erzeugen und diesen als eine Base-64-verschlüsselte Zeichenfolge zurückzugeben. private static string CreateSalt(int size) // Erzeugen einer kryptographischen Zufallszahl unter der Verwendung // des Kryptographiedienstanbieters RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider(); byte[] buff = new byte[size]; rng.getbytes(buff); // Rückgabe der Base-64-Darstellung der Zufallszahl return Convert.ToBase64String(buff); 3. Fügen Sie die folgende statische Methode hinzu, um einen Hashwert basierend auf dem übergebenen Kennwort und dem Salt-Wert zu erzeugen. private static string CreatePasswordHash(string pwd, string salt) string saltandpwd = String.Concat(pwd, salt); string hashedpwd = FormsAuthentication.HashPasswordForStoringInConfigFile( saltandpwd, "SHA1"); return hashedpwd; 4. Erstellen einer Benutzerkontendatenbank In diesem Verfahren wird eine neue Benutzerkontendatenbank in SQL Server erstellt, die eine einzige Benutzertabelle und eine gespeicherte Prozedur zum Abfragen der Benutzerdatenbank enthält. 4

υ So erstellen Sie eine Benutzerkontendatenbank 1. Klicken Sie in der Programmgruppe Microsoft SQL Server auf Query Analyzer, und stellen Sie die Verbindung zum lokalen Computer mit SQL Server her. 2. Geben Sie das folgende SQL-Skript ein. Beachten Sie, dass Sie "LocalMachine" am Ende des Skripts durch den Namen Ihres Computers ersetzen müssen. USE master -- Erstellen einer Datenbank für die Sicherheitsinformationen IF EXISTS (SELECT * FROM master..sysdatabases WHERE name = 'UserAccounts') DROP DATABASE UserAccounts CREATE DATABASE UserAccounts USE UserAccounts CREATE TABLE [Users] ( [UserName] [varchar] (255) NOT NULL, [PasswordHash] [varchar] (40) NOT NULL, [salt] [varchar] (10) NOT NULL, CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED ( [UserName] ) ON [PRIMARY] ) ON [PRIMARY] -- Erstellen einer gespeicherten Prozedur zur Registrierung von Benutzerdaten CREATE PROCEDURE RegisterUser @username varchar(255), @passwordhash varchar(40), @salt varchar(10) AS INSERT INTO Users VALUES(@userName, @passwordhash, @salt) -- Erstellen einer gespeicherten Prozedur zur Rückgabe von Benutzerdaten CREATE PROCEDURE LookupUser @username varchar(255) AS SELECT PasswordHash, salt FROM Users WHERE UserName = @username -- Hinzufügen eines Benutzernamens (Login) für das lokale ASPNET-Konto -- Ersetzen Sie im nachfolgenden Code LocalMachine durch Ihren lokalen -- Rechnernamen. exec sp_grantlogin [LocalMachine\ASPNET] -- Hinzufügen eines Datenbankbenutzers für das ASPNET-Konto in der UserAccounts- -- Datenbank exec sp_grantdbaccess [LocalMachine\ASPNET] -- Erteilung der Ausführungsberechtigung auf die beiden gespeicherten Prozeduren grant execute on LookupUser to [LocalMachine\ASPNET] grant execute on RegisterUser to [LocalMachine\ASPNET] 5

3. Führen Sie die Abfrage aus, um die Datenbank UserAccounts zu erstellen. 4. Beenden Sie Query Manager. 5. Verwenden von ADO.NET zum Speichern von Kontodetails in der Datenbank In diesem Verfahren wird der Code der Webanwendung so geändert, dass der übergebene Benutzername, der erzeugte Kennworthash und der Salt-Wert in der Datenbank gespeichert werden. υ So verwenden Sie ADO.NET zum Speichern von Kontodetails in der Datenbank 1. Kehren Sie zu Visual Studio.NET zurück, und doppelklicken Sie im Webformular auf die Schaltfläche Register, um einen Ereignishandler für das Klickereignis der Schaltfläche zu erstellen. 2. Fügen Sie der Methode den folgenden Code hinzu. string salt = CreateSalt(5); string passwordhash = CreatePasswordHash(txtPassword.Text,salt); try StoreAccountDetails( txtusername.text, passwordhash, salt); catch(exception ex) lblmessage.text = ex.message; 3. Fügen Sie am Anfang der Datei unterhalb der vorhandenen using-anweisungen die folgende using-anweisung hinzu: using System.Data.SqlClient; 4. Fügen Sie die Hilfsmethode StoreAccountDetails unter Verwendung des nachstehenden Codes hinzu. Dieser Code nutzt ADO.NET für die Herstellung der Verbindung zur UserAccounts-Datenbank und speichert den übergebenen Benutzernamen, den Kennworthash und den Salt-Wert in der Users-Tabelle. private void StoreAccountDetails( string username, string passwordhash, string salt ) // Weitere Informationen zum sicheren Speichern von Verbindungszeichenfolgen // finden Sie unter: "Verwenden von DPAPI (Computerspeicher) von ASP.NET aus" SqlConnection conn = new SqlConnection( "Server=(local);" + "Integrated Security=SSPI;" + "database=useraccounts"); SqlCommand cmd = new SqlCommand("RegisterUser", conn ); cmd.commandtype = CommandType.StoredProcedure; SqlParameter sqlparam = null; sqlparam = cmd.parameters.add("@username", SqlDbType.VarChar, 255); sqlparam.value = username; 6

sqlparam = cmd.parameters.add("@passwordhash ", SqlDbType.VarChar, 40); sqlparam.value = passwordhash; sqlparam = cmd.parameters.add("@salt", SqlDbType.VarChar, 10); sqlparam.value = salt; try conn.open(); cmd.executenonquery(); catch( Exception ex ) // Zur Vereinfachung wurde hier der Code zur Überprüfung von Primärschlüssel- // verletzungen (wegen doppelter Kontonamen) oder anderer Datenbankfehler // weggelassen. throw new Exception("Exception adding account. " + ex.message); finally conn.close(); 6. Authentifizieren von Benutzeranmeldeinformationen anhand der Datenbank In diesem Verfahren wird ADO.NET-Code entwickelt, um den übergebenen Benutzernamen in der Datenbank nachzuschlagen und um das übergebene Kennwort anhand eines Vergleichs der Kennworthashs zu überprüfen. Hinweis: In vielen Formularauthentifizierungsszenarien, in denen eine auf.net-rollen basierende Autorisierung verwendet wird, können Sie an diesem Punkt auch die Rollen, denen der Benutzer angehört, aus der Datenbank abrufen. Diese können anschließend zur Erzeugung eines GenericPrinicipal-Objekts verwendet werden, das zum Zwecke der.net-autorisierung mit authentifizierten Webanforderungen verbunden werden kann. Weitere Informationen über die Erzeugung eines Formularauthentifizierungtickets, das Benutzerrollen enthält, finden Sie unter "Vorgehensweise: Verwenden der Formularauthentifizierung mit GenericPrincipal-Objekten" im Abschnitt "Referenz" dieses Handbuchs. υ So authentifizieren Sie Benutzeranmeldeinformationen anhand der Datenbank 1. Kehren Sie zu Logon.aspx.cs zurück, und fügen Sie die private Hilfsmethode VerifyPassword wie im nachstehenden Code gezeigt hinzu. private bool VerifyPassword(string suppliedusername, string suppliedpassword ) bool passwordmatch = false; // Rückgabe des Salt-Wertes und des Kennworts aus der Datenbank. // Weitere Informationen zum sicheren Speichern von Verbindungszeichenfolgen // mit der DPAPI finden Sie unter: "Verwenden von DPAPI (Computerspeicher) // von ASP.NET aus", "Verwenden von DPAPI (Benutzerspeicher) von ASP.NET aus // mit Enterprise Services" und "Erstellen einer DPAPI-Bibliothek" 7

SqlConnection conn = new SqlConnection( "Server=(local);" + "Integrated Security=SSPI;" + "database=useraccounts"); SqlCommand cmd = new SqlCommand( "LookupUser", conn ); cmd.commandtype = CommandType.StoredProcedure; SqlParameter sqlparam = cmd.parameters.add("@username", SqlDbType.VarChar, 255); sqlparam.value = suppliedusername; try conn.open(); SqlDataReader reader = cmd.executereader(); reader.read(); // Lesen des einzigen Datensatzes // Lesen des Password-Hashwertes und des Salt-Wertes string dbpasswordhash = reader.getstring(0); string salt = reader.getstring(1); reader.close(); // Verketten des eingegebenen Kennworts und des Salt-Wertes string passwordandsalt = String.Concat(suppliedPassword, salt); // Erzeugen eines Hashwertes dieser verketteten Zeichenfolge string hashedpasswordandsalt = FormsAuthentication.HashPasswordForStoringInConfigFile( passwordandsalt, "SHA1"); // Überprüfen des berechneten Hashwertes mit dem gespeicherten Hashwert. passwordmatch = hashedpasswordandsalt.equals(dbpasswordhash); catch (Exception ex) throw new Exception("Execption verifying password. " + ex.message); finally conn.close(); return passwordmatch; 7. Testen der Anwendung Im nun folgenden Verfahren testen Sie die Anwendung. Sie registrieren einen Benutzer, was dazu führt, dass der Benutzername, der Kennworthash und der Salt-Wert der Users-Tabelle in der UserAccounts-Datenbank hinzugefügt wird. Anschließend melden Sie sich mit diesen Anmeldeinformationen an, um die ordnungsgemäße Funktion der Kennwortüberprüfungsroutinen sicherzustellen. υ So testen Sie die Anwendung 1. Kehren Sie zum Anmeldeformular zurück, und doppelklicken Sie auf die Schaltfläche Logon, um einen Ereignishandler für das Klickereignis der Schaltfläche zu erstellen. 2. Fügen Sie dem Ereignishandler für das Klickereignis der Schaltfläche Logon den folgenden Code hinzu, um die Methode VerifyPassword aufzurufen und eine Meldung anzuzeigen, die angibt, ob der übergebene Benutzername und das Kennwort gültig sind. 8

bool passwordverified = false; try passwordverified = VerifyPassword(txtUserName.Text,txtPassword.Text); catch(exception ex) lblmessage.text = ex.message; return; if (passwordverified == true ) // Der Benutzer wurde authentifiziert // Normalerweise wird an dieser Stelle ein Authentifizierungsticket erstellt // Dieses kann danach aus Gründen der Authentifizierung dazu verwendet werden, // ein GenericPrincipal-Objekt zu erstellen // Nähere Informationen finden Sie unter: "Verwenden der Formular-" // authentifizierung mit GenericPrincipal-Objekten" lblmessage.text = "Logon successful: User is authenticated"; else lblmessage.text = "Invalid username or password"; 3. Klicken Sie im Menü Erstellen auf Projektmappe erstellen. 4. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf logon.aspx, und klicken Sie dann auf In Browser anzeigen. 5. Geben Sie einen Benutzernamen und ein Kennwort ein, und klicken Sie dann auf Register. 6. Zeigen Sie mithilfe von SQL Server Enterprise Manager den Inhalt der Users-Tabelle an. Es sollte nun eine neue Zeile für den neuen Benutzernamen zusammen mit einem Kennworthash angelegt worden sein. 7. Kehren Sie zur Anmeldeseite zurück, geben Sie das Kennwort erneut ein, und klicken Sie auf Logon. Nun sollte die folgende Meldung angezeigt werden: "Logon successful: User is authenticated." 8. Geben Sie nun ein ungültiges Kennwort ein (behalten Sie jedoch den Benutzernamen bei). Nun sollte die Meldung "Invalid username or password" angezeigt werden. 9. Schließen Sie Internet Explorer. Weitere Ressourcen Weitere Informationen finden Sie in den folgenden Abschnitten: - Vorgehensweise: Verwenden von DPAPI (Computerspeicher) von ASP.NET aus - Vorgehensweise: Verwenden der Formularauthentifizierung mit GenericPrincipal- Objekten - Kapitel 12, Datenzugriffssicherheit, Abschnitt "SQL Injection-Angriffe" 9