2011-01-10 11 views
1

Java例外の機密情報を隠すにはどうしたらいいですか?例外を別のものでラップするだけで可能ですか?例外をラップして機密情報を隠す

もしそうなら、これは例外をどのように隠していますか?私は例外@デバッグ時に時計を置くと、古い例外とそれをラッピングしているものすべてを見ることができます。 ?

私はResponse.Write( "")を呼び出してWebページ/レスポンスストリームにフレンドリな文字列を書き込むことができます。これはJava Webベースのアプリケーション(組み込みサーバーでインストールするソート)のJavaプラグインです。私はあなたが侵入のこの種に対して機密データを保護するための任意の言語の仕組みやVMのメカニズムに頼る必要があるか分からない

おかげ

+0

私は誰を非表示にしたいのですか? –

答えて

2

。デバッガを使用している場合は、例外が生成される場所にブレークポイントを設定し、データを参照するだけです。

大きなリスクは、キャッチされない例外が本番ユーザーがそれを見ることができた点、または(しばしば悪い点として)ログメッセージに格納できる点に流れ込むことです。その良い例として、データベースとの通信があります。何らかの障害(単純なタイムアウトさえ)があっても、クエリ全体がログに記録されることがあります。

IMHOこのような理由から、新しい例外に機密データを保存しないようにするか、機密データで例外をキャッチする予定の最も低いポイントに新しい例外を作成することをおすすめします古い例外を破棄し、機密データを提供しないデータを作成します。

たとえば、機密データを含むクエリをデータベースに送信するメソッドで例外を作成する場合は、実際のクエリテキストを格納しないでください。または、可能であれば引数をハッシュで置き換えてください。この方法で、データの内容を公開することなく、繰り返し犯罪者を見つけることができます。

コントロールの外のページにそのようなデータを書き込むサードパーティのコンポーネントを使用している場合は、最初にそのプラグインを使用して再検討することをお勧めします。私が知っている限り、特定のプライバシーポリシーを実施する管轄区域にいる場合、これらのポリシーに準拠していない第三者のツールを使用すると、依然として責任を負う可能性があります。

+0

良い答え。おそらくあなたが言ったことをし、機密情報を記録するのが最善でしょう。問題は、詳細を隠すために、例外メッセージを解析する必要があることです。 – dotnetdev

+0

@dotnetdev:意味のある例外クラスを提供しないサードパーティのライブラリですか?その場合、メッセージ文字列全体をハッシュして生きていなければ、選択肢がないかもしれません。私の経験はどこかで、道に沿って、すべての文字列が誤って印刷される可能性があるということです:) – Uri

関連する問題