2012-02-21 4 views
1

WCFの不具合契約をしばらくしている間、自分のカスタム例外継承ツリーをTDetailとして再利用できることを望んでいました。これをうまくやってから、私はこれを考え始めました(はい、仕事をした後、思う時間が最適です)。そして私は、クライアントがTDetailとしてシリアライズされた例外の完全なスタックトレースを取得したことに気付きました。WCF障害がセキュリティ上のリスクを負うため、.NET例外を使用していますか?

これは、あなたが<servicedebug includeExceptionDetailInFaults="true" />をオンにしていない正確な理由だと私は考えていました。確信はないけど。 TDetailとして例外を使用するのはセキュリティ上のリスクですか?そして私の他の選択肢は何ですか?

答えて

1

前述したように、内部システムについてより多くの情報を外部に公開するというセキュリティ上のリスクがあります。しかし、TDetailは何でも構いません。したがって、メッセージや興味深い例外情報を保持するような新しい例外オプションを作成して、スタックトレースのような保護されたデータをクリアしてから、クライアントに承認する部分だけを直列化します。

+0

私は自分のカスタム例外でDataContractsを使ってこれをしようとしましたが、DataContractsとISerializableオブジェクトをこのように混在させることはできません。これを実装するには、私のカスタム例外の 'ISerializable.GetObjectData'メソッドを再実装するか、同等のFaultContractsを実装する必要があります。 Intellisense(私はGetObjectDataを実装している間に得られない)が好きで、DataContractsのWCFツールの魔法のサポートが好きです。 – dvdvorle

1

スタックトレースを公開することはあまり大きなセキュリティリスクではありませんが、潜在的な可能性は、あなたのシステム(データベース、ライブラリなど)に関する情報をアタッカーに与えることができます。だから私の意見では、プロダクション環境の詳細を回す必要がありますが、デバッグの際の大きな助けになります。

+0

セキュリティリスクがどのようなものかを指摘してくれてありがとう。 – dvdvorle

0

あなたのサービスの消費者は誰であるかによって異なります。それを外界に開放しているとすれば、サービスの消費者にセキュリティ違反を引き起こす可能性のあることについてのアイデアを与えるため、これらの詳細をサービスのクライアントに渡すことはお勧めできません。しかし、それを内部的に使用し、うまく管理しているとすれば、これらの詳細を使って何かできるようにするには、ファイアウォールの背後にあるおそらく、外の世界とネットワーク上の管理者Im推測によって制御されています。

+0

私は内部ユーザーを信頼しません;-)(はい、私は編集的です)。真剣にでも。ある企業が特定の数の従業員に達すると、私は自分のユーザーを「社内」と見なさなくても、私はそれらすべてを知らないのです... – dvdvorle

+3

はい、あなたは明らかに私が言ったことを理解できませんでした。彼らが内部にいる場合、どのように防火壁の背後にあるか、システムは監視され、ユーザーは知られているだろうし、エンドのエン・ユーザーに提供した応答を処理したいいくつかの方法は、内部的なものなので、おそらくクライアント側のものをプログラミングすることになります。それは管理された、よく制御された環境です。あなたのFaultExceptionsに基づいて、クライアント側で何かをしたい場合です。 –

関連する問題