5

文字列のインターンは良いのですが、後で文字列の値に簡単にアクセスできるため、セキュリティ上の問題になる可能性があるという質問に答えました。

そして、私はこれが本当だと確信していますが:-)それが本当にどれほど簡単かはわかりません。トピックをグーグルで検索してみましたが、関連する結果が得られませんでした(これはgoogle-fuが弱い)ので、SOで皆さんに試してみます。

アプリのドミアンでインターされた文字列のリストにアクセスするための「簡単な」方法を知っていますか?メモリダンプなどを使用する必要がありますか、それともAppDomain.GetInteredStringsList()のようなメソッドがありますか?

そしてそれに関連して:インターンされた文字列から有用なデータを取得するのは本当に簡単です。機密データを文字列に保存することは本当にセキュリティホールですか?

4

4 に答える 4

6

それは特に簡単ではありませんが、実行可能です。

基本的に、メモリダンプを取ることができるものがある場合は、文字列オブジェクトのように見えるメモリのビットを見つけることができます。(特に、それらはすべて最初に同じ「情報を入力するためのポインター」を持っているので、サンプル文字列を持っている場合は、離れています。)

ちなみに、これはインターンされた文字列とはほとんど関係がありません。すべての文字列がインターンされるわけではありません。文字列定数と、ユーザーが明示的にインターンする文字列のみです。

于 2008-12-23T13:07:49.073 に答える
3

機密データを文字列に保存することは本当にセキュリティホールですか?

はい、間違いなくはい!

機密性の高いセキュリティデータは、SecureStringクラスを使用して保存する必要があります。

編集:

インターンされた文字列でさえ管理ヒープに格納されるため、ツールを使用してヒープをダンプすると、アプリケーション内のすべての文字列が表示されます。

于 2008-12-23T13:30:15.207 に答える
1

賢明なアプリケーションでは、パスワードは文字配列に格納されるため、不要になったときに上書きできます。

于 2008-12-23T13:12:24.353 に答える
1

不可能ではありません...必ずしもマネージコードを使用しているわけではありません。プロセス ダンプ (windb / sos / など) にアクセスできるものは、文字列を探すのに何の問題もありません。

于 2008-12-23T13:48:46.853 に答える