Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Metode ini memeriksa beberapa karakteristik kata sandi yang kuat dan memperbarui parameter string dengan informasi yang memeriksa kegagalan kata sandi.
Kata sandi dapat digunakan dalam sistem yang aman untuk mengotorisasi pengguna. Namun, kata sandi harus sulit ditebak oleh pengguna yang tidak sah. Penyerang dapat menggunakan program serangan kamus, yang melakukan iterasi melalui semua kata dalam kamus (atau beberapa kamus dalam bahasa yang berbeda) dan menguji apakah salah satu kata berfungsi sebagai kata sandi pengguna. Kata sandi yang lemah seperti "Yankes" atau "Mustang" dapat ditebak dengan cepat. Kata sandi yang lebih kuat, seperti "?You'L1N3vaFiNdMeyeP@sSWerd!", jauh lebih kecil kemungkinannya untuk ditebak. Sistem yang dilindungi kata sandi harus memastikan bahwa pengguna memilih kata sandi yang kuat.
Kata sandi yang kuat kompleks (berisi campuran huruf besar, huruf kecil, numerik, dan karakter khusus) dan bukan kata. Contoh ini menunjukkan cara memverifikasi kompleksitas.
Contoh
Kode
''' <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
Mengkompilasi kode
Panggil metode ini dengan meneruskan string yang berisi kata sandi tersebut.
Contoh ini memerlukan:
- Akses ke anggota System.Text.RegularExpressions namespace.
ImportsTambahkan pernyataan jika Anda tidak sepenuhnya memenuhi syarat nama anggota dalam kode Anda. Untuk informasi selengkapnya, lihat Pernyataan Impor (Namespace dan Jenis.NET).
Keamanan
Jika Anda memindahkan kata sandi di seluruh jaringan, Anda perlu menggunakan metode aman untuk mentransfer data. Untuk informasi selengkapnya, lihat ASP.NET Web Application Security.
Anda dapat meningkatkan akurasi ValidatePassword fungsi dengan menambahkan pemeriksaan kompleksitas tambahan:
Bandingkan kata sandi dan substringnya dengan nama pengguna, pengidentifikasi pengguna, dan kamus yang ditentukan aplikasi. Selain itu, perlakukan karakter yang mirip secara visual setara saat melakukan perbandingan. Misalnya, perlakukan huruf "l" dan "e" setara dengan angka "1" dan "3".
Jika hanya ada satu karakter huruf besar, pastikan itu bukan karakter pertama kata sandi.
Pastikan bahwa dua karakter terakhir kata sandi adalah karakter huruf.
Jangan izinkan kata sandi di mana semua simbol dimasukkan dari baris atas keyboard.