2010-06-04 27 views
5

Tôi đang cố gắng lấy dữ liệu từ một hộp mật khẩu wpf vào một chuỗi an toàn. Làm thế nào là thực hiện? những gì tôi có cho đến thời điểm này:hộp mật khẩu wpf vào SecureString trong C#

SecureString pass = new SecureString(); 
     pass.AppendChar(pbox1.Password); 

khóa học này không hoạt động, vì vậy làm cách nào để lấy dữ liệu mật khẩu mà không tạo chuỗi thông thường?

Trả lời

8

bạn cần phải đọc từng nhân vật trong

SecureString pass = new SecureString(); 

foreach (char c in pbox1.Password) 
{ 
    pass.AppendChar(c); 
} 

hoặc an toàn hơn sử dụng tài sản SecurePassword

SecureString pass = pbox1.SecurePassword 
+3

Làm điều này khá nhiều đánh bại mục đích sử dụng 'SecureString'. –

16

Per MSDN:

Khi bạn nhận được Mật khẩu tài sản giá trị, bạn hiển thị mật khẩu là văn bản thuần túy trong bộ nhớ. Để tránh nguy cơ bảo mật tiềm ẩn này, hãy sử dụng thuộc tính SecurePassword để nhận mật khẩu dưới dạng SecureString.

Bạn nên tránh sử dụng thuộc tính Mật khẩu trừ khi bạn hoàn toàn cần phiên bản thuần của chuỗi. Trong trường hợp này, truy xuất trực tiếp SecureString.

+1

Nếu chỉ có một cách để đặt mật khẩu bằng SecureString – Sebastian

3
SecureString pass = pbox1.SecurePassword.Copy(); 
Các vấn đề liên quan