Даст ли мне SecureString какое-либо преимущество, когда дело доходит до декомпиляции MSIL? - PullRequest
2 голосов
/ 01 июля 2011

Разве лучше это сделать

char[] sec = { 'a', 'b', 'c'};

SecureString s = new SecureString();
foreach (char c in sec) {
    s.AppendChar(c);
}

IntPtr pointerName = System.Runtime.InteropServices.Marshal.SecureStringToBSTR(s);
String secret = System.Runtime.InteropServices.Marshal.PtrToStringBSTR(pointerName);

, чем это

String secret = "abc";

или это

char[] sec = { 'a', 'b', 'c'};
String secret = new Secret(sec);

, если я хочу защитить? Abc"из-за обнаружения в декомпилированном коде MSIL?

Ответы [ 2 ]

6 голосов
/ 01 июля 2011

SecureString защитит вашу строку один раз в памяти, строка, скомпилированная в ваш MSIL, все еще будет там в простом виде. Если вам нужно скрыть секретную информацию, например, зашифрованный файл app.config, как описано здесь: http://weblogs.asp.net/jgalloway/archive/2008/04/13/encrypting-passwords-in-a-net-app-config-file.aspx

НТН Dominik

3 голосов
/ 01 июля 2011

Нет. SecureString существует для предотвращения хранения в памяти конфиденциального текста (например, паролей).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...