亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我什么時候需要.NET中的SecureString?

我什么時候需要.NET中的SecureString?

慕勒3428872 2019-08-30 16:47:22
我試圖了解.NET的SecureString的目的。來自MSDN:System.String類的實例都是不可變的,當不再需要時,不能以編程方式調度垃圾回收; 也就是說,實例在創建后是只讀的,并且無法預測實例何時從計算機內存中刪除。因此,如果String對象包含敏感信息(如密碼,信用卡號或個人數據),則使用該信息后可能會顯示該信息,因為您的應用程序無法從計算機內存中刪除該數據。SecureString對象類似于String對象,因為它具有文本值。但是,SecureString對象的值會自動加密,可以修改,直到您的應用程序將其標記為只讀,并且可以通過應用程序或.NET Framework垃圾收集器從計算機內存中刪除。初始化實例或修改值時,SecureString實例的值會自動加密。您的應用程序可以呈現實例不可變,并通過調用MakeReadOnly方法防止進一步修改。自動加密是最大的收益嗎?為什么我不能說:SecureString password = new SecureString("password");代替SecureString pass = new SecureString();foreach (char c in "password".ToCharArray())    pass.AppendChar(c);我錯過了SecureString的哪個方面?
查看完整描述

3 回答

?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

我會停止使用SecureString??雌饋鞵G家伙正在放棄對它的支持。可能甚至在將來拉它 - https://github.com/dotnet/apireviews/tree/master/2015-07-14-securestring。


我們應該在.NET Core中的所有平臺上從SecureString中刪除加密 - 我們應該廢棄SecureString - 我們可能不應該在.NET Core中公開SecureString


查看完整回答
反對 回復 2019-08-30
?
烙印99

TA貢獻1829條經驗 獲得超13個贊

目前使用的框架的某些部分SecureString:


WPF的System.Windows.Controls.PasswordBox控件在內部將密碼保存為SecureString(作為副本公開PasswordBox::SecurePassword)

該System.Diagnostics.ProcessStartInfo::Password物業是一個SecureString

用于X509Certificate2獲取SecureString密碼的構造函數

主要目的是減少攻擊面,而不是消除它。SecureStrings在RAM中被“固定”,因此垃圾收集器不會移動它或復制它。它還確保純文本不會寫入Swap文件或核心轉儲中。加密更像是混淆,并且不會阻止確定的黑客,誰能夠找到用于加密和解密它的對稱密鑰。


正如其他人所說的那樣,你必須創建一個SecureString逐個字符的原因是因為第一個明顯的缺點:你可能已經將秘密值作為一個普通的字符串了,那么重點是什么?


SecureStrings是解決Chicken-and-Egg問題的第一步,因此即使大多數當前場景需要將它們轉換回常規字符串以完全使用它們,它們在框架中的存在現在意味著更好地支持它們。未來 - 至少到你的程序不一定是薄弱環節的地步。


查看完整回答
反對 回復 2019-08-30
  • 3 回答
  • 0 關注
  • 1078 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號