He leído varios artículos sobre cómo usar las Propiedades adjuntas para vincular el valor de un PasswordBox en WPF. Sin embargo, cada artículo también hace referencia a la documentación de .NET que explica por qué PasswordBox no se hizo enlazable en primer lugar.Uso de PasswordBox con WPF - MVVM
No me considero un experto en seguridad de ninguna manera, pero me imagino que alguien en Microsoft sabía lo que estaban haciendo, y no debería esforzarme al máximo para deshacerlo.
Entonces, en cambio, se me ocurrió mi propia solución.
public class LoginViewModel
{
// other properties here
public PasswordBox Password
{
get { return m_passwordBox; }
}
// Executed when the Login button is clicked.
private void LoginExecute()
{
var password = Password.SecurePassword;
// do more stuff...
}
}
Entonces, en mi XAML, sólo han prestado los PasswordBox mediante la unión del campo de contraseña a un ContentPresenter
.
Así que mi pregunta es ... ¿hay algún problema al hacerlo de esta manera? Me doy cuenta de que estoy rompiendo el MVVM de alguna manera al permitir que los controles reales aparezcan en mi ViewModel, pero al menos esto parece más correcto que simplemente desproteger el campo de contraseña.
Si esto es, de hecho, un problema, ¿alguien ha presentado una solución que no implique el uso de Propiedades adjuntas y el almacenamiento de la contraseña en el modelo de vista?
Gracias! -J
¿Cuál es exactamente el problema con el enfoque de la propiedad adjunta? ¿Es que el tipo de propiedad es una cadena? ¿Por qué no hacerlo SecureString? –
Como dije antes, parecía que había una razón por la cual no era una DependencyProperty para empezar, por lo que encontrar una solución alternativa parecía ser el enfoque equivocado. Supongo que podría simplemente "enlazar" a la propiedad SecurePassword en su lugar. – jeremyalan
El problema cuando la propiedad de Contraseña es enlazable es: su valor es fácilmente rastreado por un software externo. como SNOOP. qué fácil es robar tu contraseña entonces. – ktutnik