我正在開發與ASP.Net WebAPI和WPF客戶端/服務器應用程序。 現在我正考慮通過https對基本身份驗證進行身份驗證。您可以提出更好的解決方案,但Windows身份驗證和服務器端會話不適用於我。WPF客戶端WebAPI - 如何處理密碼驗證
對於基本身份驗證,我需要用純文本(base64)在客戶端上的密碼通過電話發送每個請求,對不對?
但我不希望用戶在每次請求時重新輸入密碼,所以我在應用程序啓動時有一個登錄窗口。
WPF PasswordBox使用SecureString並且未綁定到視圖模型。但至少在請求之前,我必須將密碼作爲普通字符串來將其編碼爲base64。 因此無論我做什麼,遲早密碼都以純文本格式存儲在RAM中。
以後的請求保存密碼的最佳做法是什麼?
- 緩存PasswordBox
- 緩存SecureString的
- 高速緩存中的純文本字符串,因爲它會在RAM任一方式
- 高速緩存中的base64編碼字符串,因爲它至少是不明顯;)
- ...?
那麼我該如何處理這種合理安全的方式呢? 大型玩家(MS,Google,Apple,...)的其他應用程序不會爲每次通話請求我的密碼,所以必須有一種方法。
爲什麼在地球上你想發送密碼爲Base64?這是一個簡單的,非加密的編碼,所有使用它的用戶都會使用更多的內存。 Base64通常用於將二進制數據編碼爲字符串,而不是字符串作爲更長的字符串。 – ProfK
首先,我要感謝您強調這一點,因爲談論安全主題時應該瞭解這一點。在這種情況下,你對base64絕對沒有幫助。我知道這一點,並且在問這個問題之前我知道這一點。 這就是爲什麼我寫道:_至少它是晦澀難懂的)_ 但爲什麼base64?因爲這是WebAPI的基本身份驗證工作原理:[請參閱asp.net站點](https://www.asp.net/web-api/overview/security/basic-authentication) – alex