1

SecureString クラスがあることは知っていますが、ほとんどのシナリオではあまり役に立たないと思います。

たとえば、クライアント/サーバー システムがあるとします。サーバーは私が作成したアプリケーションを必要としません。統合認証のない SQL Server でさえありえます。ユーザーがクライアント アプリのフォームにパスワードを入力すると、パスワードはクリア テキストでメモリに保存されるため、SecureString を使用して読み取ることはできますが、そうする意味がわかりません。確かに、攻撃面を減らすことはできますが、それほど多くはありません... たとえ私がそうしたとしても、ユーザーが「OK」を押したときに、プレーンテキスト文字列からハッシュを計算する必要があるだけであっても、プレーンテキスト文字列を生成する必要があります。

それで、GCがメモリを再利用することを決定するまで、パスワード文字列が浮かび上がるのを避ける方法はありますか? それでも、再び使用する前に記憶は消去されますか?

4

2 に答える 2

3

SecureStringまだ時間が来ていない素晴らしいアイデアです。これは、次のシナリオで最も役立ちます。

  1. プレゼンテーション層のパスワードボックスは、各キー押下を個別に取得し、SecureString一度に1つずつ詰め込みます。このクラスは、これを容易にするために特別に設計されたいくつかの変更メソッドを公開します。たとえば、WPFはこれをサポートします(PasswordBox.SecurePasswordコントロールプロパティを介して)。
  2. 認証APIは、SecureStringネイティブタイプのパスワードを受け入れます。

これらのいずれかが当てはまらない場合は、コードパスのある時点で、をに解凍する必要があるため、かなりの時間を無駄にしていSecureStringますString

ユーザーを認証する最も安全な方法は、ユーザー名/パスワードのクレデンシャルを完全に処理しないようにすることです。代わりに、Windows認証、InfoCards、OpenIDなどを使用できます。

于 2010-10-28T10:45:51.757 に答える
1

キーごとにハッシュキーを生成できます。テキストボックスのOnKeyPressイベントを使用して、その追加バイトでハッシュを計算し、テキストボックスに他の文字を入力するだけ*です。

于 2010-10-28T10:46:17.173 に答える