簡體   English   中英

C# & WPF - 使用 SecureString 作為客戶端 HTTP API 密碼

[英]C# & WPF - Using SecureString for a client-side HTTP API password

編寫 WPF 應用程序時, PasswordBox將輸入的PasswordBox存儲為SecureString 這完全有道理。 但是,我想通過 HTTP API 發送密碼,並且HttpClient PostAsync 似乎接受表單編碼數據的字符串。

我知道其他人已經問過相關問題,最值得注意的是 SecureString 在 C# 應用程序中是否實用? ,但我還沒有找到一種令人滿意的方法來將此SecureString發送到 Http 端點,而無需先將其轉換為String 轉換首先完全破壞了SecureString的對象(因為它將明文直接放回到托管內存中)。

是否有規范正確(最好是直接)的方法來做到這一點?

為了完整披露 - 我無法控制 HTTP API。

我認為,雖然不完美,但對您來說最好的解決方案是使用DecryptSecureString方法,該方法由rdev5答案上發布(畢竟,無論如何,密碼都是通過網絡以明文形式傳輸的)

rdev5 的方法將SecureString解密為一個字符串,按照您告訴它的方式處理密碼,然后將其從內存中擦除。 這減少了密碼在內存中的窗口,從而減少了從那里偷看密碼的時間。

Strings.DecryptSecureString(secureString, (password) =>
{
    // Do your API call here
});

PS :正如原帖所指出的,請確保不要將password內容保存在其他地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM