Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Diese Methode überprüft Merkmale eines starken Passworts und aktualisiert einen Zeichenfolgenparameter mit Informationen darüber, bei welchen Überprüfungen das Passwort nicht besteht.
Kennwörter können in einem sicheren System verwendet werden, um einen Benutzer zu autorisieren. Die Kennwörter müssen jedoch für Unbefugte schwer zu erraten sein. Angreifer können ein Wörterbuchangriffsprogramm verwenden, das alle Wörter in einem Wörterbuch (oder mehrere Wörterbücher in verschiedenen Sprachen) durchläuft und prüft, ob eines der Wörter als Kennwort eines Benutzers funktioniert. Schwache Kennwörter wie "Yankees" oder "Mustang" können schnell erraten werden. Stärkere Kennwörter, z. B. "?You'L1N3vaFiNdMeyeP@sSWerd!", sind wesentlich schwieriger zu erraten. Ein kennwortgeschütztes System sollte sicherstellen, dass Benutzer sichere Kennwörter auswählen.
Ein sicheres Kennwort ist komplex (enthält eine Mischung aus Großbuchstaben, Kleinbuchstaben, numerischen und Sonderzeichen) und ist kein Wort. In diesem Beispiel wird veranschaulicht, wie Die Komplexität überprüft wird.
Beispiel
Programmcode
''' <summary>Determines if a password is sufficiently complex.</summary>
''' <param name="pwd">Password to validate</param>
''' <param name="minLength">Minimum number of password characters.</param>
''' <param name="numUpper">Minimum number of uppercase characters.</param>
''' <param name="numLower">Minimum number of lowercase characters.</param>
''' <param name="numNumbers">Minimum number of numeric characters.</param>
''' <param name="numSpecial">Minimum number of special characters.</param>
''' <returns>True if the password is sufficiently complex.</returns>
Function ValidatePassword(ByVal pwd As String,
Optional ByVal minLength As Integer = 8,
Optional ByVal numUpper As Integer = 2,
Optional ByVal numLower As Integer = 2,
Optional ByVal numNumbers As Integer = 2,
Optional ByVal numSpecial As Integer = 2) As Boolean
' Replace [A-Z] with \p{Lu}, to allow for Unicode uppercase letters.
Dim upper As New System.Text.RegularExpressions.Regex("[A-Z]")
Dim lower As New System.Text.RegularExpressions.Regex("[a-z]")
Dim number As New System.Text.RegularExpressions.Regex("[0-9]")
' Special is "none of the above".
Dim special As New System.Text.RegularExpressions.Regex("[^a-zA-Z0-9]")
' Check the length.
If Len(pwd) < minLength Then Return False
' Check for minimum number of occurrences.
If upper.Matches(pwd).Count < numUpper Then Return False
If lower.Matches(pwd).Count < numLower Then Return False
If number.Matches(pwd).Count < numNumbers Then Return False
If special.Matches(pwd).Count < numSpecial Then Return False
' Passed all checks.
Return True
End Function
Sub TestValidatePassword()
Dim password As String = "Password"
' Demonstrate that "Password" is not complex.
MsgBox(password & " is complex: " & ValidatePassword(password))
password = "Z9f%a>2kQ"
' Demonstrate that "Z9f%a>2kQ" is not complex.
MsgBox(password & " is complex: " & ValidatePassword(password))
End Sub
Kompilieren des Codes
Rufen Sie diese Methode auf, indem Sie die Zeichenfolge übergeben, die dieses Kennwort enthält.
In diesem Beispiel ist Folgendes erforderlich:
- Zugriff auf die Member des System.Text.RegularExpressions Namespaces. Fügen Sie eine
Imports
-Anweisung hinzu, wenn Sie Membernamen in Ihrem Code nicht vollqualifizieren. Weitere Informationen finden Sie unter Imports-Anweisung (.NET-Namespace und -typ).
Sicherheit
Wenn Sie das Kennwort über ein Netzwerk verschieben, müssen Sie eine sichere Methode zum Übertragen von Daten verwenden. Weitere Informationen finden Sie unter ASP.NET Webanwendungssicherheit.
Sie können die Genauigkeit der ValidatePassword
Funktion verbessern, indem Sie zusätzliche Komplexitätsprüfungen hinzufügen:
Vergleichen Sie das Kennwort und die zugehörigen Teilzeichenfolgen mit dem Namen, der Benutzer-ID und einem anwendungsdefinierten Wörterbuch. Behandeln Sie außerdem visuell ähnliche Zeichen als gleichwertig, wenn Sie die Vergleiche ausführen. Behandeln Sie beispielsweise die Buchstaben "l" und "e" als Äquivalent zu den Ziffern "1" und "3".
Wenn nur ein Großbuchstaben vorhanden ist, stellen Sie sicher, dass es sich nicht um das erste Zeichen des Kennworts handelt.
Stellen Sie sicher, dass die letzten beiden Zeichen des Kennworts Buchstaben sind.
Lassen Sie keine Kennwörter zu, in denen alle Symbole aus der obersten Zeile der Tastatur eingegeben werden.