Tôi đã đọc một số bài viết về cách sử dụng Thuộc tính được đính kèm để liên kết với giá trị của một PasswordBox trong WPF. Tuy nhiên, mỗi bài viết cũng tham khảo tài liệu .NET giải thích lý do tại sao PasswordBox không được thực hiện ở vị trí đầu tiên.Sử dụng PasswordBox với WPF - MVVM
Tôi không coi mình là chuyên gia bảo mật bằng bất kỳ phương tiện nào, nhưng tôi cho rằng ai đó ở Microsoft biết họ đang làm gì và tôi không nên nỗ lực để hoàn tác nó.
Vì vậy, thay vào đó, tôi đã đưa ra giải pháp của riêng mình.
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...
}
}
Sau đó, trong XAML, tôi chỉ hiển thị Hộp Mật khẩu bằng cách gắn trường Mật khẩu vào ContentPresenter
.
Vì vậy, câu hỏi của tôi là ... có vấn đề gì khi thực hiện theo cách này? Tôi nhận ra rằng tôi sắp phá vỡ MVVM theo một cách bằng cách để các điều khiển thực sự xuất hiện trong ViewModel của tôi, nhưng ít nhất điều này có vẻ chính xác hơn là không bảo mật trường mật khẩu.
Nếu đây là sự cố, có ai đưa ra giải pháp không liên quan đến việc sử dụng Thuộc tính được đính kèm và lưu trữ mật khẩu trong ViewModel không?
Cảm ơn! -J
Chính xác vấn đề với cách tiếp cận thuộc tính được đính kèm là gì? Có phải loại thuộc tính là chuỗi không? Tại sao không làm cho nó SecureString? –
Giống như tôi đã nói ở trên, nó có vẻ như có một lý do nó không phải là một DependencyProperty để bắt đầu, vì vậy việc tìm kiếm một công việc xung quanh dường như là cách tiếp cận sai. Tôi cho rằng tôi có thể dễ dàng "liên kết" với thuộc tính SecurePassword thay thế. – jeremyalan
Sự cố khi thuộc tính Mật khẩu bị ràng buộc là: giá trị của nó dễ dàng được theo dõi bởi phần mềm bên ngoài. chẳng hạn như SNOOP. làm thế nào để dễ dàng ăn cắp mật khẩu của bạn sau đó. – ktutnik