2008-09-06 74 views
8

Tôi đang viết (trong C# với .NET 3.5) một ứng dụng quản trị sẽ thăm dò nhiều hệ thống Windows cho các bit dữ liệu khác nhau. Trong nhiều trường hợp, nó sẽ sử dụng WMI, nhưng trong một số trường hợp nó có thể cần phải đọc registry từ xa hoặc thực thi từ xa một số lệnh hoặc script trên hệ thống được hỏi. Cuộc thăm dò ý kiến ​​này sẽ xảy ra ở các khoảng lặp lại - thường là hàng đêm, nhưng có thể được cấu hình để xảy ra nhiều hơn (hoặc ít hơn) thường xuyên. Vì vậy, cuộc thăm dò có thể xảy ra thường xuyên cứ 10 phút một lần hoặc ít nhất là mỗi tháng một lần. Nó cần phải xảy ra một cách tự động, không có sự can thiệp của con người.Lưu trữ mật khẩu Windows

Các chức năng này sẽ yêu cầu quyền truy cập cấp quản trị vào hệ thống được thăm dò ý kiến. Bây giờ, tôi hy vọng rằng trong hầu hết các trường hợp sử dụng, sẽ có miền và ứng dụng bỏ phiếu có thể chạy dưới dạng dịch vụ có quyền quản trị miền (hoặc tương đương), có nghĩa là tôi không phải lo lắng về việc lưu trữ mật khẩu - thiết lập quản trị viên ứng dụng sẽ xác định tên người dùng/mật khẩu của dịch vụ thông qua các cơ chế Windows chuẩn.

Nhưng luôn có một vài con cừu đen ở ngoài đó. Chương trình có thể chạy trong môi trường không tên miền hoặc trong trường hợp một số hệ thống được thăm dò không phải là thành viên của miền. Trong những trường hợp này, chúng tôi sẽ phải xác định tên người dùng và mật khẩu, lưu trữ chúng một cách an toàn, sau đó gọi cặp người dùng/pass này tại thời điểm chúng tôi thăm dò ý kiến ​​hệ thống đó. Vì vậy, xin lưu ý - trong trường hợp này, chương trình được viết là người dùng người gửi mật khẩu cho hệ thống xác thực.

Tôi không chắc liệu tôi có cần sử dụng mã băm có thể đảo ngược hay không, sau đó tôi giải mã thành văn bản thuần túy tại thời điểm sử dụng hoặc nếu có một số cơ chế Windows cho phép tôi lưu trữ và sau đó sử dụng lại băm. Rõ ràng cơ chế thứ hai là thích hợp hơn; Tôi muốn chương trình của tôi là không bao giờ biết giá trị văn bản thuần của mật khẩu hoặc biết nó trong khoảng thời gian ngắn nhất có thể.

Tôi cần đề xuất về các cách thông minh và an toàn để thực hiện việc này.

Cảm ơn bạn đã tìm kiếm!

+0

bản sao có thể có của [Cách lưu trữ mật khẩu trong ứng dụng Winforms?] (Http://stackoverflow.com/questions/40853/how-to-store-passwords-in-winforms-application) – BalusC

Trả lời

6

Câu trả lời là ở đây:

How to store passwords in Winforms application?

+0

1800 THÔNG TIN đã đề xuất CryptProtectData của DPAPI trong C++. Dường như biểu thức .NET là lớp [ProtectedData] (http://msdn.microsoft.com/en-us/library/system.security.cryptography.protecteddata.aspx) trong [System.Security.Cryptography] (http://msdn.microsoft.com/en-us/library/system.security.cryptography.aspx) không gian tên. Xin lỗi tôi đã không đề cập trước đó - Tôi đang viết mã trong C#. Sẽ chỉnh sửa câu hỏi để phản ánh điều này. Đây có lẽ là giải pháp cho vấn đề của tôi, nhưng tôi sẽ để cho câu hỏi này nấu ăn (như chưa được trả lời) một vài ngày nữa để tạo ra các giải pháp khả thi khác. – quux

0

Vâng có vẻ như chương trình của bạn cần để mạo danh một người sử dụng khác hơn là bối cảnh, theo đó nó vẫn đang chạy. Mặc dù, nó trông giống như một quá trình khá tự động, nhưng nếu nó không, bạn có thể chỉ đơn giản là không yêu cầu quản trị viên để đưa vào tên người dùng và mật khẩu tại thời điểm này 'đen cừu' máy tính đang được thăm dò ý kiến?

+0

Vaibhav: không, bởi vì chương trình bỏ phiếu có khả năng chạy vào ban đêm khi không có người dùng ở đó. Chương trình bỏ phiếu có thể thăm dò hàng trăm hoặc hàng ngàn hệ thống từ xa cho dữ liệu mà nó tìm kiếm; nghĩ về nó như một công cụ kiểm kê máy tính doanh nghiệp. – quux

Các vấn đề liên quan