Megosztás a következőn keresztül:


Útmutató: Annak ellenőrzése, hogy a jelszavak összetettek-e (Visual Basic)

Ez a módszer ellenőrzi az erős jelszavak néhány jellemzőjét, és frissíti a karakterlánc paramétert azzal az információval, hogy a jelszó mely ellenőrzéseken bukik meg.

A jelszavak biztonságos rendszerben használhatók a felhasználó engedélyezéséhez. A jelszavakat azonban a jogosulatlan felhasználók nehezen találhatják ki. A támadók használhatnak egy szótári támadási programot, amely végigvezeti a szótárban lévő összes szót (vagy több különböző nyelvű szótárat), és ellenőrzi, hogy a szavak bármelyike a felhasználó jelszavaként működik-e. A gyenge jelszavak, például a "Yankees" vagy a "Mustang" gyorsan kitalálhatók. Erősebb jelszavak, mint például "?You'L1N3vaFiNdMeyeP@sSWerd!", sokkal kevésbé valószínű, hogy kitalálják. A jelszóval védett rendszereknek biztosítaniuk kell, hogy a felhasználók erős jelszavakat válasszanak.

Az erős jelszó összetett (nagybetűk, kisbetűk, numerikus és speciális karakterek kombinációját tartalmazza), és nem szó. Ez a példa bemutatja, hogyan ellenőrizhető az összetettség.

példa

Kód

''' <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

A kód összeállítása

A metódus meghívásához adja meg a jelszót tartalmazó sztringet.

Ehhez a példához a következőre van szükség:

Biztonság

Ha a jelszót egy hálózaton keresztül helyezi át, biztonságos módszert kell használnia az adatok átviteléhez. További információ: ASP.NET WebAlkalmazás biztonsága.

A függvény pontosságát ValidatePassword további összetettségi ellenőrzések hozzáadásával javíthatja:

  • Hasonlítsa össze a jelszót és annak alsztringjét a felhasználó nevével, a felhasználói azonosítóval és az alkalmazás által definiált szótárval. Emellett az összehasonlítások végrehajtásakor a vizuálisan hasonló karaktereket egyenértékűként kell kezelni. Az "l" és az "e" betűket például az "1" és a "3" számmal egyenértékűnek kell tekinteni.

  • Ha csak egy nagybetű van, győződjön meg arról, hogy nem a jelszó első karaktere.

  • Győződjön meg arról, hogy a jelszó utolsó két karaktere betűkarakterek.

  • Ne engedélyezze azokat a jelszavakat, amelyekben az összes szimbólum be van írva a billentyűzet felső sorából.

Lásd még