0
  • ユーザーがASPXページを持っています。

  • textox(パスワード用の)入力があります。

  • ユーザーは自分のパスワードを入力します。

  • ページはIISに送信されます。

  • それは最初にiisに行きます。

  • この段階までに、パスワードはプレーンテキストでメモリに保存されます。

  • 現在、Asp.netはパスワードをSecureStringに入れています。

  • いくつかの計算を行った後、ページはクライアントに送信されます。


IIS POVから:

彼はまだ実際にはパスワードをプレーンテキストとして見ています...そうではありませんか?

4

2 に答える 2

3

あなたの話によると、パスワードをに保存することはほとんど意味がありませんSecureString。一度は通常の文字列としてメモリにすでに存在していたので、元に戻すのはそれほどSecureString便利ではありません。さらに、フォームが戻っても、すべてがプレーンテキストとして返送されます。

このような状況では、コンピューターにアクセスし、メモリを分析し、パスワードを抽出する攻撃者からシステムを保護しようとするよりも、サーバーとクライアントの通信を保護する(つまりSSLを使用する)のが最善です(!)。

于 2012-03-18T10:15:55.167 に答える
1

SecureStringの読み取りはより複雑です。データを安全に保つことも目的とした単純なToStringメソッドはありません。データを読み取るには、C#開発者はメモリ内のデータに直接アクセスする必要があります。幸い、.NET Frameworkを使用すると、かなりシンプルになります。SecureStringToBSTRメソッドなどのSystem.Runtime.InteropServices.Marshalクラスの適切なメンバーを使用して、SecureStringオブジェクトの値を操作します。

            IntPtr stringPointer = Marshal.SecureStringToBSTR(objSecureString);
            string normalString = Marshal.PtrToStringBSTR(stringPointer);
于 2012-03-18T10:18:42.743 に答える