在我的WPF應用程序中,我希望允許管理員使用各種其他用戶的集成安全性測試數據庫連接。所以我有一個表單,允許管理員輸入域名,用戶名和密碼,然後對其進行測試。我能夠安全地處理密碼的權利,直到我在這需要一個string password
安全的Windows模擬?
LogonUser(UserName, Domain, Password, LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref UserHandle)
我已經寫了效用函數的SecureString的轉換爲字符串儘可能安全,然後即時通話的advapi32.dll
調用LogonUser
它在LogonUser的調用密碼:
LogonUser(UserName, Domain, Helper.ConvertSafely(Password), LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, ref UserHandle)
由於對LogonUser的簽名需要一個字符串,除非LogonUser的正在於它的執行密碼的適當的照顧,他仍然可以是後以純文本我的調用堆棧通話返回。有沒有更安全的方式來模仿一個用戶,在這個用戶中,我可以知道密碼是安全的嗎?
基本上所有我需要的是一個WindowsImpersonationContext
,但我想贏得密碼永遠不會以純文本。
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 – 2014-09-05 19:17:03
其實問題不錯。但是,如果您真的關心安全性,那麼我建議您也考慮非技術性安全漏洞:您的管理員不得擁有或不要求瞭解您的用戶密碼。您創建用戶名/密碼屏幕的事實表明管理員將輸入用戶憑證。這對我來說似乎是非常錯誤的。 (如果不是管理員,而是用戶自己,誰將填寫他們的憑證,那麼只需在他們自己的登錄名下申請RUNAS,這樣你就不需要冒充了。) – stakx 2014-09-05 19:27:06
不會無論如何,原始表單輸入字段使用常規字符串?此外,您可能有興趣使用我的[SimpleImpersonation](https://github.com/mj1856/SimpleImpersonation)庫簡化您的LogonUser代碼,如[此處]所述(http://stackoverflow.com/a/7250145/634824)。儘管我也沒有使用'SecureString'。 – 2014-09-05 19:44:13