6

そのため、.NET フレームワークは、文字列を安全な方法で格納するためのSecureStringクラスを提供します。しかし、情報を読み取って操作するには、標準の文字列に戻す必要があります。この実装例を参照してください。

ポインターを使用した例からわかるように、暗号化されていない文字列を返します。文字列の「安全でない」インスタンスを管理するにはどうすればよいでしょうか? 一度設定した値を操作する最も安全な方法は何ですか?

編集

この質問の目的は、SecureStrings を使用してから値を操作するときに潜在的な攻撃の可能性を減らす方法について説明することでした。「重複」リンクに関する「理由」ではありません。

4

1 に答える 1

8

の内容を にSecureString戻すとString、ここにリストされている文字列を使用する際の問題が再び発生します。

http://blogs.msdn.com/shawnfa/archive/2004/05/27/143254.aspx

SecureStringは、コンテンツをアンマネージ メモリにマーシャリングするためのオプションが用意されているため、データにアクセスして、処理が終わったらデータを破棄できます。

これらは、マネージ コードにはないオプションです。管理されていないバイトを操作する場合、メモリをゼロに設定したり、ディスクにページングされていないことを確認したりできます。これは、ここで攻撃面を減らすためにまさに必要なことです。

ここで重要なのは、データの別のインスタンスを作成せString、このデータを処理するときにセキュリティを管理しやすい方法でデータを処理することです (残念ながら、現在は管理されていないコードです)。

于 2009-01-17T03:33:38.540 に答える