我很驚訝這個問題並沒有深入討論:是否有更安全的.Net SQLConnection類替代品?
This article告訴我們如何使用WinDbg內存轉儲運行.NET過程字符串。
我花了很多時間研究SecureString類,使用非託管固定的內存塊,並保持過加密的數據。好東西。
這個問題是在當你使用它的價值,並將其分配給SQLConnection.ConnectionString屬性,它是System.String類型。這是什麼意思?嗯......
- 它採用明文存儲
- 垃圾收集四處移動它,離開副本在內存
- 它可與WinDbg的存儲器中讀取轉儲
這完全通過則無效SecureString功能!
最重要的是,SQLConnection類是uninheritable,我甚至無法推出自己的具有SecureString的屬性來代替;耶爲封閉來源。好極了。
新的DAL層正在進行中,但對於新的主要版本和許多用戶而言,每個用戶升級前至少2年,其他人可能會無限期地無限期地停留在舊版本上。
由於頻率的連接使用,從SecureString的編組也無濟於事,因爲一成不變的舊副本貼在內存中,直到GC惡有惡報。集成的Windows安全不是一種選擇,因爲有些客戶端不能在域上工作,而其他客戶端則通過網絡漫遊和連接。
如何在內存中確保連接字符串的安全,因此無法用windbg查看?
您是在談論駐留在客戶機器或Web應用程序上的應用程序? – ALOToverflow 2010-04-08 12:53:22
這是一個客戶端桌面應用程序.Net 2.0,客戶端 - 服務器架構 – invert 2010-04-08 13:49:00