0

現在、ユーザーパスワードをSecureString. DBへの接続がリセットされた場合に備えて、これも保持されます。

私の問題は、このパスワードをに渡そうとしていますが、OracleParamaterそれがサポートされているかどうかわかりません。

Oracle のOracle.DataAccessdll は、または をサポートしていますSecureStringBStr? それを文字列に変換する必要がある場合、それはSecureString.

- - 編集

SecureString暗号化されていないパスワードのコピーをできるだけ少なくすることで、攻撃対象領域を減らすことが目的であることはわかっています。問題は、ある時点でパスワードを解読して使用する必要があることです。char[]またはBStr安全な文字列自体を渡すことができればOracleParameter、呼び出しが戻った後にそれをクリアできます。しかし、Oracle に渡すために文字列を作成する必要がある場合は、パスワードの新しい不変コピーを作成しただけです。ですから、その時得たものはあまりありません。

4

2 に答える 2

1

いいえ-あなたが尋ねることはサポートされていません...

ただし、サポートされていたとしても、使用されている Oracle ドライバー (OCI) はネイティブであり、何も知らないため、セキュリティの問題は残ります。SecureStringしたがって、暗号化なしで内部的に値を処理します。つまり、この値は、たとえば、スワップファイル...

あなたが求めるものが.NET側でサポートされていれば、もう少し安全ですが、それだけです...

そのレベルのセキュリティが本当に必要な場合は、ソフトウェアのその部分を再設計して、サーバー側 (Oracle DB) が「プレーンテキスト」を必要とせずに暗号化された値で動作するように、暗号化された値を使用することをお勧めします.. .

于 2012-02-27T15:23:36.077 に答える
0

SecureStringは、個人情報のメモリ内ホルダーです。

それが実装された理由は、ユーザーの個人情報を保持するためにsimpleを使用する場合、stringそのオブジェクトを参照しなくなり、すでにガベージコレクションされた後でも、プロセスメモリのダンプを実行することによるハッカーコードが引き続きアクセスできる可能性があるためです。そのメモリ位置で利用可能なデータなので、個人情報にアクセスします。

の場合SecureString、代わりにその場所が消去されるため、メモリダンプでも、コードで使用されている文字列に関連するものは表示されません。

Yahiaが提案しているように、接続セキュリティまたはデータ送信セキュリティについて懸念がある場合は、その目的のために安全な接続を使用してください。

于 2012-02-27T15:04:40.107 に答える