Kiedy potrzebuję SecureString w .NET?
Usiłuję grok celu SecureString .NET. Z MSDN:
Instancja klasy System.String jest zarówno niezmienna, jak i, gdy nie jest już potrzebna, nie może być programowo zaplanowana do czyszczenia pamięci; Oznacza to, że instancja jest tylko do odczytu po jej utworzeniu i nie można przewidzieć, kiedy instancja zostanie usunięta z pamięci komputera. W konsekwencji, jeśli obiekt String zawiera poufne informacje, takie jak hasło, numer karty kredytowej lub dane osobowe, istnieje ryzyko, że informacje zostaną ujawnione po jego użyciu, ponieważ aplikacja nie może usunąć danych z pamięci komputera.
Obiekt SecureString jest podobny do obiektu String, ponieważ ma wartość tekstową. Jednak wartość obiektu SecureString jest automatycznie szyfrowana, może być modyfikowana, dopóki aplikacja nie oznaczy go jako tylko do odczytu, i może zostać usunięta z pamięci komputera przez aplikację lub moduł czyszczenia pamięci .NET Framework.
Wartość instancji SecureString jest automatycznie szyfrowana, gdy instancja jest inicjowana lub gdy wartość jest modyfikowana. Twoja aplikacja może unieważnić instancję i zapobiec dalszej modyfikacji, wywołując metodę MakeReadOnly.
Czy automatyczne szyfrowanie jest dużą wypłatą?
I dlaczego nie mogę po prostu powiedzieć:
SecureString password = new SecureString("password");
zamiast
SecureString pass = new SecureString();
foreach (char c in "password".ToCharArray())
pass.AppendChar(c);
Jaki aspekt SecureString brakuje mi?