[解決済み] デバッグシンボル(pdbファイル)を本番環境に展開するリスクは?
質問
私は、例外のスタック トレースを記録するアプリケーションを持っており、実稼働環境にデプロイされたときに、これらのスタック トレースにファイル名と行番号を含めたいと思っていました。 私は、アセンブリとともにデバッグ シンボルを展開する方法を見つけ出したのですが、この問題を研究する過程で この質問 これは、実稼働環境で pdb ファイルをインクルードするのは良いアイデアではないことを示唆しています。 受理された回答へのコメントによると、"...デバッグ情報は機密データを提供し、攻撃のベクトルになる可能性があります。あなたのアプリが何であるかによりますが、"
では、どのような種類の機密データが公開される可能性があるのでしょうか。 デバッグ シンボルは、どのようにアプリケーションを危険にさらすために使用できるのでしょうか? 技術的な詳細については興味がありますが、私が本当に求めているのは、任意のアプリケーションおよび生産環境に対してデバッグ シンボルを含めることのリスクを評価するための実用的な方法なのです。 別の言い方をすれば、起こりうる最悪の事態は何でしょうか?
EDIT。 フォローアップ質問/明確化
これまでのみんなの回答から、この質問は.NETアプリケーションのために少し単純化することができるように思えます。 のこのビットは John Robbins ブログ にリンクされている Michael Maddoxの回答 が目に飛び込んできました。
<ブロッククオート.NET PDBには2つの情報、ソースファイル名と ソースファイル名と行数 とその行、そしてローカル変数 の名前です。他のすべての情報は .NETメタデータに含まれているため、同じ情報を重複して記述する必要はありません。 PDBファイルに同じ情報を複製する必要はありません。 PDBファイルで同じ情報を複製する必要はありません。
私にとっては、これは他の人が Reflector について言っていることの繰り返しで、本当の問題はアセンブリへのアクセスであるということを暗に示しています。 それが決まれば、PDB に関して行うべき唯一の決定は、ファイル名、行番号、およびローカル変数名 (そもそもエンド ユーザーにスタック トレースを表示しないと仮定して) を公開することを気にするかどうかということです。 あるいは、私はこれをあまりにも単純化しすぎましたか?
どのように解決するのですか?
ここで、もう一つの質問を見てみましょう。
PDB デバッグ ファイルをライブ サーバーに残しておくことにセキュリティ上の問題はないのでしょうか?
PDBファイルについての詳細も。
一般的に、私は常にデプロイメントに pdb ファイルを含めます。
もしあなたがユーザーにスタックトレースを決して公開しないのであれば (そして一般的にはそうすべきではない)、PDB ファイルをデプロイすることによる追加のセキュリティリスクは実際にはありません。
ユーザーが見えるスタックトレースが起こるとき、ユーザーはあなたのファイル名とファイル行番号を含む完全なスタックトレースを見ることができます。 これは、アプリがどのように構築されているかについてのアイデアを与えることができ、ハッキングする際に役立つ可能性があります。
より大きなセキュリティ脅威は、次のようなものです。 リフレクター のようなもので、DLL で使用すると、pdb ファイルの有無にかかわらず、ソースコードを見ることができるようになります。
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み】この動詞型ではcontent-bodyを送信できない
-
[解決済み】警告。同じ依存アセンブリの異なるバージョン間で競合が見つかりました。
-
[解決済み] スマートクライアント・ソフトウェアファクトリーの体験談
-
[解決済み] Windowsイベントログで参照される「フレームワークのバージョン」とは何ですか?
-
[解決済み] 後で平文を取り出すためのユーザーパスワードの保管について、倫理的にどのように取り組むべきでしょうか?
-
[解決済み] Entity FrameworkとLINQ to SQLの比較
-
[解決済み] .Any() vs .Count() > 0のどちらのメソッドがより良いパフォーマンスを発揮しますか?
-
[解決済み] PowerShellで文字列がNULLまたは空であるかどうかを確認するにはどうすればよいですか?
-
[解決済み] リリースモードの.NETアセンブリのスタックトレースで行数を表示する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] CLSID {XXXX} を持つコンポーネントの COM クラスファクトリの取得は、次のエラーにより失敗しました: 80040154。
-
[解決済み] Html.BeginForm()にCSSクラスを追加する。
-
[解決済み] ファイルまたはアセンブリ 'System.Data.SQLite' をロードできませんでした。
-
[解決済み] ASP.NET control to render a <div>
-
[解決済み] Nuget接続の試行に失敗しました。"Unable to load service index for source"。
-
[解決済み] .net の OOM 問題を解決する必要があります。
-
[解決済み] .NETでのdecimal, float, doubleの違い?
-
[解決済み] LINQクエリでToList()とToArray()のどちらを呼び出すのが良いですか?
-
[解決済み] Visual Studioのコンパイルエラー "mismatch between processor architecture "を修正するにはどうしたらいいですか?
-
[解決済み] リリースモードの.NETアセンブリのスタックトレースで行数を表示する