Baru-baru ini, saya mempelajari kontrol login baru di asp.net 2.0 dan menemukan bahwa persyaratan keamanan kata sandi default sistem relatif tinggi, yaitu, "panjang kata sandi minimum adalah 7, yang harus berisi karakter non-alfanumerik berikut: 1. ", untuk Wang Zhan biasa, tidak ada yang Diperlukan (bahkan windows2003sever tidak memerlukan kata sandi yang rumit secara default). Metode modifikasi yang disediakan oleh beberapa bahan referensi adalah dengan memodifikasinya di machine.config. Namun kecuali Anda memiliki hak administratif atas host, Anda tidak dapat mengubahnya. Jadi tetap disarankan untuk memodifikasinya di file web.config.
Caranya adalah dengan menambahkan subtag ke node <system.web> di web.config:
<keanggotaan>
<penyedia>
<hapus nama="AspNetSqlMembershipProvider"/>
<tambahkan nama="AspNetSqlMembershipProvider"
type=" System.Web.Security.SqlMembershipProvider, System.Web, Versi=2.0.0.0, Budaya=netral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="LocalSqlServer"
aktifkanPasswordRetrieval="false"
aktifkanPasswordReset="benar"
membutuhkanQuestionAndAnswer="benar"
Nama Aplikasi="/"
membutuhkanUniqueEmail="false"
passwordFormat="Di-hash"
maxInvalidPasswordAttempts="5"
minDiperlukanPasswordLength="6"
minDiperlukanKarakter Nonalfanumerik="0"
kata sandiAttemptWindow="10"
kata sandiStrengthRegularExpression="" />
</penyedia>
</keanggotaan>
Mari kita jelaskan atribut kuncinya:
koneksi database connectionStringName. Ini perlu diatur di web.config
aktifkanPasswordRetrieval Mendapat nilai yang menunjukkan apakah penyedia keanggotaan saat ini dikonfigurasi untuk mengizinkan pengguna mengambil kata sandi mereka.
aktifkanPasswordReset Mendapat nilai yang menunjukkan apakah penyedia keanggotaan saat ini dikonfigurasi untuk mengizinkan pengguna mengatur ulang kata sandi mereka.
requireQuestionAndAnswer Mendapat nilai yang menunjukkan apakah penyedia keanggotaan default mengharuskan pengguna menjawab pertanyaan kata sandi untuk pengaturan ulang dan pengambilan kata sandi.
applicationName mendapatkan atau menetapkan nama aplikasi.
requireUniqueEmail Menunjukkan apakah pengguna harus memberikan nilai alamat email unik saat membuat pengguna.
passwordFormat menunjukkan format penyimpanan kata sandi di penyimpanan data keanggotaan. Instruksi terperinci di bawah
maxInvalidPasswordAttempts Mendapatkan jumlah kata sandi tidak valid atau upaya jawaban kata sandi tidak valid yang diizinkan sebelum pengguna dikunci dari keanggotaan.
minRequiredPasswordLength Mendapatkan panjang minimum yang diperlukan untuk kata sandi.
minRequiredNonalphanumericCharacters Mendapatkan jumlah minimum karakter khusus yang harus disertakan dalam kata sandi yang valid.
passwordAttemptWindow Mendapatkan jumlah maksimum kata sandi tidak valid atau upaya jawaban kata sandi tidak valid yang diperbolehkan sebelum pengguna keanggotaan dikunci, dalam hitungan menit.
Properti penjelasan rinci dari PasswordFormat menunjukkan format penyimpanan kata sandi. Kata sandi dapat disimpan dalam format kata sandi Jelas, Terenkripsi, dan Hash. Kata sandi yang jelas disimpan dalam teks yang jelas, sehingga meningkatkan kinerja penyimpanan dan pengambilan kata sandi, namun kurang aman dan dapat dengan mudah dibaca ketika keamanan sumber data dikompromikan. Kata Sandi Terenkripsi dienkripsi saat disimpan dan dapat didekripsi saat membandingkan atau mengambil kata sandi. Kata sandi tersebut memerlukan pemrosesan tambahan selama penyimpanan dan pengambilan, namun lebih aman dan tidak dapat diambil dengan mudah ketika keamanan sumber data dikompromikan. Kata Sandi Hash di-hash menggunakan algoritma hashing satu arah dan nilai garam yang dihasilkan secara acak saat disimpan dalam database. Ketika kata sandi diverifikasi, kata sandi tersebut di-hash dengan nilai garam di database untuk verifikasi. Tidak dapat mengambil kata sandi yang di-hash.