Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Этот метод проверяет наличие некоторых характеристик строгого пароля и обновляет строковый параметр со сведениями о том, какие проверки пароля завершается ошибкой.
Пароли можно использовать в безопасной системе для авторизации пользователя. Однако пароли должны быть трудными для неавторизованных пользователей. Злоумышленники могут использовать программу атаки на словарь, которая выполняет итерацию всех слов в словаре (или нескольких словарях на разных языках) и проверяет, работают ли какие-либо слова в качестве пароля пользователя. Слабые пароли, такие как "Янкиз" или "Mustang", можно быстро угадать. Более надежные пароли, такие как "?You'L1N3vaFiNdMeyeP@sSWerd!", значительно сложнее угадать. Система, защищенная паролем, должна гарантировать, что пользователи выбирают надежные пароли.
Надежный пароль является сложным (содержащий смесь прописных, строчных, числовых и специальных символов) и не является словом. В этом примере показано, как проверить сложность.
Пример
Код
''' <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
Компиляция кода
Вызовите этот метод, передав строку, содержащую этот пароль.
Для этого примера требуется:
- Доступ к членам System.Text.RegularExpressions пространства имен. Добавьте оператор
Imports, если вы не полностью квалифицируете имена участников в коде. Дополнительные сведения см. в разделе "Импорт" (пространство имен и тип.NET).
Безопасность
Если вы перемещаете пароль по сети, необходимо использовать безопасный метод для передачи данных. Дополнительные сведения см. в разделе ASP.NET Web Application Security.
Вы можете повысить точность ValidatePassword функции, добавив дополнительные проверки сложности:
Сравните пароль и его подстроки с именем пользователя, идентификатором пользователя и словарем, определенным приложением. Кроме того, визуально похожие символы обрабатываются как эквивалентные при выполнении сравнений. Например, следует рассматривать буквы "l" и "e" как эквивалентные числовым числам "1" и "3".
Если имеется только один верхний регистр, убедитесь, что он не является первым символом пароля.
Убедитесь, что последние два символа пароля являются буквами.
Не разрешайте пароли, в которых все символы вводятся из верхней строки клавиатуры.