الإرشادات التفصيلية: التحقق من صحة أن كلمات المرور معقدة (Visual Basic)

هذا الأسلوب يتحقق من بعض ميزات كلمة المرور القوية و تحديثات معلمة السلسلة بمعلومات حول أي عمليات فشل كلمة المرور.

يمكن استخدام كلمات المرور في النظام الآمن لتخويل مستخدم. على الرغم من ذلك، يجب أن تكون كلمات المرور يصعب على المستخدمين الغير المخولين من تخمينها. يمكن للمهاجمين استخدام برنامج هجوم القاموس، بالتكرار عبر كل الكلمات في قاموس (أو عدة قواميس بلغات مختلفة) ثم اختبار ما إذا كان أي من كلمات العمل بوصفك أحد مستخدمي كلمة المرور. يمكن تخمين كلمات المرور الضعيفة مثل "Yankees" أو "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

التحويل البرمجي للتعليمات البرمجية

استدعاء هذا الأسلوب بتمرير السلسلة التي تحتوي على كلمة المرور.

يتطلب هذا المثال:

الأمان

إذا قمت بنقل كلمة المرور عبر شبكة اتصال تحتاج إلى استخدام أسلوب اتصال آمن لنقل بيانات. لمزيد من المعلومات، راجع أمان التطبيق ASP.NET على ويب.

يمكنك تحسين دقة دالة ValidatePassword بواسطة إضافة تدقيق التعقيد إضافية:

  • يقارن سلاسل فرعية الخاصة به مقابل قاموس معرّف بواسطة تطبيق و معرّف مستخدم أو اسم مستخدم و كلمة المرور. بالإضافة إلى ذلك، معاملة الأحرف المتشابهة بشكل مرئي مكافئة عند إجراء المقارنة. على سبيل المثال، معاملة الأحرف "l" و "e" مكافئة إلى الأرقام "1" و "3".

  • إذا كان هناك حرف واحد فقط الأحرف الكبيرة للتأكد من أنه لا الحرف أول كلمة المرور.

  • تأكد من أن آخر الحرفين من كلمة المرور أحرف حرف.

  • لا تسمح كلمات المرور التي تم إدخالها الكل الرموز من لوحة المفاتيح الصف العلوي.

راجع أيضًا:

المرجع

Regex

موارد أخرى

أمان التطبيق ASP.NET على ويب