2011-07-01 10 views
2

が、私が逆コンパイルMSILで検出されたbeeingてから "ABC" を保護したい場合は、このSecureStringはMSILの逆コンパイルに関して何か利点がありますか?

String secret = "abc"; 

またはこの

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

よりも、この

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); 

を行うにはどのような方法で、より良いですコード?

答えて

6

SecureStringは一度メモリ内の文字列を保護しますが、MSILにコンパイルされた文字列はまだそのまま存在します。あなたはここで説明するように、暗号化されたapp.configのようなsensitify情報conside何かを非表示にする必要がある場合:http://weblogs.asp.net/jgalloway/archive/2008/04/13/encrypting-passwords-in-a-net-app-config-file.aspx

HTH ドミニク

+0

1を単純な答えのために:) –

3

SecureStringは、機密テキスト(パスワードなど)がメモリに保持されないようにするために存在します。

関連する問題