Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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:
- Hozzáférés a névtér tagjaihoz System.Text.RegularExpressions . Adjon hozzá egy
Imports
utasítást, ha nem adja meg teljes egészében a tagneveket a kódban. További információ: Import Statement (.NET Namespace and Type).
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.