Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Deze methode controleert op bepaalde kenmerken van sterke wachtwoorden en werkt een stringparameter bij met informatie over welke controles het wachtwoord niet doorstaat.
Wachtwoorden kunnen worden gebruikt in een beveiligd systeem om een gebruiker te autoriseren. De wachtwoorden moeten echter moeilijk zijn voor onbevoegde gebruikers om te raden. Aanvallers kunnen een programma voor woordenlijstenaanvallen gebruiken, dat alle woorden in een woordenlijst (of meerdere woordenlijsten in verschillende talen) doorloopt en test of een van de woorden werkt als een wachtwoord van een gebruiker. Zwakke wachtwoorden zoals 'Yankees' of 'Mustang' kunnen snel worden geraden. Sterkere wachtwoorden, zoals '?You'L1N3vaFiNdMeyeP@sSWerd!', zijn veel minder waarschijnlijk om geraden te worden. Een met een wachtwoord beveiligd systeem moet ervoor zorgen dat gebruikers sterke wachtwoorden kiezen.
Een sterk wachtwoord is complex (met een combinatie van hoofdletters, kleine letters, numerieke en speciale tekens) en is geen woord. In dit voorbeeld ziet u hoe u de complexiteit kunt controleren.
Voorbeeld
Code
''' <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
De code compileren
Roep deze methode aan door de tekenreeks door te geven die dat wachtwoord bevat.
Voor dit voorbeeld is het volgende vereist:
- Toegang tot de leden van de System.Text.RegularExpressions naamruimte. Voeg een
Importsinstructie toe als u niet volledig gekwalificeerde ledennamen in uw code gebruikt. Zie Importinstructie (.NET-naamruimte en -type) voor meer informatie.
Veiligheid
Als u het wachtwoord over een netwerk verplaatst, moet u een veilige methode gebruiken voor het overdragen van gegevens. Zie ASP.NET Web Application Security voor meer informatie.
U kunt de nauwkeurigheid van de ValidatePassword functie verbeteren door extra complexiteitscontroles toe te voegen:
Vergelijk het wachtwoord en de bijbehorende subtekenreeksen met de naam, de gebruikers-id en een woordenlijst die door de toepassing is gedefinieerd. Daarnaast moet u visueel vergelijkbare tekens behandelen als gelijkwaardig bij het uitvoeren van de vergelijkingen. Behandel bijvoorbeeld de letters 'l' en 'e' als equivalent aan de cijfers '1' en '3'.
Als er slechts één hoofdletter is, moet u ervoor zorgen dat het niet het eerste teken van het wachtwoord is.
Zorg ervoor dat de laatste twee tekens van het wachtwoord lettertekens zijn.
Sta geen wachtwoorden toe waarin alle symbolen worden ingevoerd in de bovenste rij van het toetsenbord.