我有一個帶有登錄第一個屏幕的應用程序。密碼在密碼文本框中輸入,這是一個安全字符串。我的想法是將此 SecureString 存儲在全局應用程序變量中,因為我將在某些操作中需要它,所以我想避免用戶每次都必須輸入密碼。一個動作可能是發送電子郵件,我需要用戶和密碼,所以我不希望用戶每次要發送和發送電子郵件時都寫電子郵件帳戶的密碼。我已經閱讀了一些帖子,我知道最后我將需要來自 secureString 的純文本,這是弱點,因此困擾的解決方案是減少純文本在內存中的時間。可以在此處找到一些解決方案。但我的問題是,全局變量如何是一個安全字符串,在不解碼的同時安全嗎?如果這不是一個好的選擇,還有其他更好的選擇,但不需要用戶每次操作需要密碼時都輸入密碼?謝謝。
2 回答

米脂
TA貢獻1836條經驗 獲得超3個贊
存儲SecureString
包含密碼的不安全。盡管該字符串是加密的,這會使窺探者更難找出它是什么,但它仍然存在并且可能會被解密。
實際上,使用 a 的主要優點之一SecureString
是能夠在不再需要它時釋放它。
看看這里:
總的來說,SecureString 比 String 更安全,因為它限制了敏感字符串數據的暴露。但是,這些字符串可能仍會暴露給任何有權訪問原始內存的進程或操作,例如在主機上運行的惡意進程、進程轉儲或用戶可查看的交換文件。不使用 SecureString 來保護密碼,推薦的替代方法是對存儲在進程之外的憑據使用不透明句柄。
如果不深入了解您的應用程序,我可以告訴您的是:如果您必須存儲包含密碼的字符串,請使用SecureString
. 但是,例如,如果您可以使用 Windows 集成安全性或任何其他機制來傳播憑據,那就更好了。
最后,沒有應用程序是完全安全的。您必須了解您的攻擊媒介......誰將使用該應用程序,它的部署位置等。否則您可能會花太多時間擔心一件小事(例如內存轉儲)而忘記一個更大的問題(您的數據庫安全嗎?管理員密碼安全嗎?)。
- 2 回答
- 0 關注
- 217 瀏覽
添加回答
舉報
0/150
提交
取消