3

私はこのスレッドを見ました:

.NET で SecureString が必要になるのはいつですか?

そこにあるコード:

SecureString password = new SecureString("password");

SecureString pass = new SecureString();
foreach (char c in "password".ToCharArray())
    pass.AppendChar(c);

そして、2番目のもの(文字ごとに文字を追加する)の利点を理解しています-ハッカーがメモリ内のランダムな場所にあるすべての文字を追跡できないようにします(メモリ内の1つの文字列を見つけることができます)。

私が理解していない部分はその部分です: ここに画像の説明を入力

その黄色のコードはメモリ内にあります。

そう...利点はどこにありますか?

4

2 に答える 2

3

2 番目のコード サンプルはToCharArray()、セキュリティ文字列を埋めるための制限された方法を示しているだけです。これは (ベスト) プラクティスのサンプルではありません。

リンク先のスレッドは、ほとんどの答えを提供します。完全な解決策ではありません。

しかし、受け入れられた答えからこれらの2点を取ります:

  • WPF の PasswordBox コントロールは、パスワードを SecureString として内部的に保持します。
  • System.Diagnostics.ProcessInfo の Password プロパティは SecureString です。

これらを一緒に使用すると、パスワードをプロセスに安全に転送できます。

于 2011-12-31T13:05:07.823 に答える
1

パスワードは、ある時点で常に暗号化されません。問題は「いつまで?」メモリ内で 30 分間暗号化しないでおくと、数秒後にガベージ コレクションされる文字列よりもハッキングされる可能性が高くなります。

于 2011-12-31T13:04:42.010 に答える