Melindungi Pengikatan PasswordBox dalam Seni Bina MVVM
Mengikat PasswordBox
secara langsung dalam aplikasi MVVM menimbulkan risiko keselamatan yang ketara. Artikel ini menggariskan penyelesaian pengikatan tersuai selamat yang menegakkan prinsip MVVM sambil melindungi penyulitan kata laluan.
Pelaksanaan ViewModel: Pendekatan Selamat
Laksanakan harta SecureString
tulis sahaja dalam ViewModel anda:
<code class="language-csharp">public SecureString SecurePassword { private get; set; }</code>
Lihat Pelaksanaan: Pengendalian Acara
Lampirkan PasswordChanged
pengendali acara pada PasswordBox
anda dalam XAML anda:
<code class="language-xml"><PasswordBox PasswordChanged="PasswordBox_PasswordChanged" /></code>
Kod Di Belakang: Logik Pengikat Selamat
Kod di belakang mengendalikan pengikatan antara sifat PasswordBox
dan SecureString
:
<code class="language-csharp">private void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e) { if (this.DataContext != null) { ((dynamic)this.DataContext).SecurePassword = ((PasswordBox)sender).SecurePassword; } }</code>
Alternatif: Ikatan Teks Jelas (Gunakan dengan Berhati-hati!)
Jika mengosongkan teks kata laluan boleh diterima (walaupun secara amnya tidak digalakkan atas sebab keselamatan), anda boleh menggunakan sifat Password
dan bukannya SecurePassword
.
Harta ViewModel (Teks Jelas):
<code class="language-csharp">public string Password { private get; set; }</code>
Pengikatan Kod-Belakang (Teks Kosong):
<code class="language-csharp">private void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e) { if (this.DataContext != null) { ((dynamic)this.DataContext).Password = ((PasswordBox)sender).Password; } }</code>
Nota Keselamatan Penting: Walaupun kaedah teks yang jelas ini memudahkan pengikatan, ia mendedahkan kata laluan dalam teks biasa. Menggunakan SecureString
amat disyorkan untuk keselamatan optimum.
Kaedah pengikatan tersuai ini memastikan kata laluan kekal disulitkan sepanjang proses, selaras dengan amalan terbaik keselamatan dan mengekalkan seni bina MVVM yang bersih. Utamakan pendekatan SecureString
untuk perlindungan kata laluan yang mantap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengikat PasswordBox dengan Selamat kepada MVVM ViewModel Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!