Geschrieben von: Christian Koller
Kategorie: ASP Tricks
This printed page brought to you by AlphaSierraPapa
Ein Paßwort benötigt man in einer ASP-Applikation immer dann, wenn sich ein Benutzer mittels Kombination aus Benutzername und Paßwort identifizieren soll. Beispiele für Websites, die eine Benutzeridentifizierung benötigen, sind Onlineshops, Administrationsseiten, Sites mit Zugriff auf vertrauliche Daten, Downloadbereich für Software die eine Registrierung erfordert, usw.
Wie muß ein "sicheres" Paßwort beschaffen sein? Es darf nicht leicht zu erraten sein, wie der Vorname einer Person etwa. Es muß eine eindeutige Folge von Buchstaben und Ziffern sein, in der keine Verwechslungsgefahr wie zum Beispiel zwischen dem großem O und der Null (0), oder dem kleinen L (l) und der Eins (1) besteht.
Um eine mehr oder weniger zufällige Folge von Buchstaben und Ziffern zu generieren, bietet sich unter VBScript (ASP) die Rnd Funktion an.
Die Rnd Methode erzeugt ein zufällige Kommazahl zwischen 0 und 1. Es ist ein Leichtes, über mathematische Operatoren und Stringfunktionen wie Asc und Chr aus solch einer Zufallszahl ein zufällige Kombination aus Ziffern, Groß- und Kleinbuchstaben zu erstellen.
Das folgende Skript zeigt die fertige Funktion namens GenerierePasswort, die ein sicheres Paßwort liefert. Das Argument der Funktion GenerierePasswort gibt die Länge des zu generierenden Paßwortes an:
<% Response.Write GenerierePasswort(6) Function GenerierePasswort(Laenge) ' Laenge gibt die Laenge des Passwortes an Dim intI, objTools, strPassword strPassword = "" For intI = 1 to Laenge ' Eine Stelle des Passwortes generieren strPassword = strPassword & GenerateCharacter() Next GenerierePasswort = strPassword End Function Function GenerateCharacter() Dim intRnd, strRnd ' Erzeuge einen Kleinbuchstaben, oder eine Zahl ' Nicht erlaubt: 0,1,l,I Randomize Do intRnd = Int(Rnd * 60) If intRnd >=52 Then strRnd = CStr(intRnd - 51) ElseIf intRnd >= 26 Then strRnd = Chr(Asc("A") + intRnd - 26) Else strRnd = Chr(Asc("a") + intRnd) End If Loop Until (strRnd <> "0" And strRnd <> "l" _ And strRnd <> "I") GenerateCharacter = strRnd End Function %>
Einige Beispiele von Paßwörtern, die das Skript erzeugt, sind: Dy7xnD, MHuRGw, R2qf4L.
Die Funktion GenerierePasswort ruft die Funktion GenerateCharacter auf. Dies benutzt Randomize, um den Zufallsgenerator zu initialisieren. Dann erstellt sie mit Hilfe der Funktion Rnd eine Zufallszahl zwischen 0 und 59.
Wenn die Zufallszahl größer oder gleich 52 ist, so wird von dieser Zahl der Wert 51 abgezogen, um so eine Zahl zwischen 2 und 9 zu erhalten. Wenn die Zufallszahl größer oder gleich 26 ist, so wird von ihr 26 abgezogen, das Ergebnis zum ASCII Code des großen A hinzugezählt, und der dem Resultat entsprechende große Buchstabe aus der ASCII-Tabelle generiert.
Für eine Zufallszahl kleiner als 26 wird ein entsprechender kleiner Buchstabe ausgegeben.
Durch den wiederholten Aufruf der Funktion GenerateCharacter wird in der Funktion GenerierePasswort schließlich aus den einzelnen zufälligen Zeichen ein Paßwort aufgebaut.
This printed page brought to you by AlphaSierraPapa
ASP-basierte Basic Authentication
http:/www.aspheute.com/artikel/20010521.htm
Bannerzwang
http:/www.aspheute.com/artikel/20011001.htm
Benutzerverwaltung leicht gemacht: Teil 1
http:/www.aspheute.com/artikel/20020429.htm
Ein einfacher Eventkalender für Projektteams
http:/www.aspheute.com/artikel/20020319.htm
On Demand Zugriffsrechte für Web Sites vergeben
http:/www.aspheute.com/artikel/20011207.htm
Passwörter speichern - aber richtig!
http:/www.aspheute.com/artikel/20040105.htm
Sicherheitsaspekte bei der Gestaltung von ASP Sites ohne Cookies
http:/www.aspheute.com/artikel/20010601.htm
©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.