System..::.String 類別的執行個體是不變的,且不再需要它時,無法以程式方式來排程以進行記憶體回收;也就是說,該執行個體在建立之後是唯讀的,且無法預期何時會將其從電腦記憶體中刪除。因此,如果 String 物件包含機密資訊,例如密碼、信用卡號碼或個人資料,使用該物件後會有洩漏機密資訊的風險,因為您的應用程式無法將資料從電腦記憶體中刪除。
SecureString 物件與 String 物件的相似之處在於它具有文字值。不過,SecureString 物件的值會自動加密,且可以在您的應用程式將其標示為唯讀前進行修改,也可以由應用程式或 .NET Framework 記憶體回收行程將其從電腦記憶體中刪除。
SecureString 執行個體的值,會在初始化執行個體或修改該值時自動加密。您的應用程式可使執行個體永遠不變,並透過叫用 MakeReadOnly 方法避免進一步修改。
請注意,SecureString 並沒有檢查、比較或轉換 SecureString 值的成員。缺少這類成員有助於防止執行個體值被不慎或惡意公開。請使用適當的 System.Runtime.InteropServices..::.Marshal 類別成員,例如 SecureStringToBSTR 方法,管理 SecureString 物件的值。
SecureString 類別衍生自 CriticalFinalizerObject 類別,並實作 IDisposable 介面。如需實作 IDisposable 介面的詳細資訊,請參閱 記憶體回收。
SecureString 類別及其成員對 COM 為不可見。如需詳細資訊,請參閱 ComVisibleAttribute。
Windows 2000 平台注意事項:
除了 Windows 2000 Service Pack 4 和更新的版本之外,Windows 2000 Service Pack 3 也支援 SecureString。