「ソースとシンク」ビュー
「ソースとシンク」ビューでは、入力および出力のトレースに基づいて検出結果を表示できます。
「ソースとシンク」ビューは、以下の 3 つのセクションに分かれています。
- ソースとシンク: 左側のパネルに、以下の 3 つの最上位ノードがあります。
- ソース: ソースはプログラムへの入力で、ファイル、サーブレット要求、コンソール入力、ソケットなどがあります。ほとんどの入力ソースでは、返されるデータの内容や長さが制限されません。チェックされていない入力については、汚染されているものと見なされます。ソースは、すべての検出結果表の「ソース」列に表示されます。
- シンク: シンクは、データの書き込み先になる、あらゆる外部フォーマットです。シンクの例としては、データベース、ファイル、コンソール出力、ソケットなどがあります。データをチェックせずにシンクに書き込むと、重大なセキュリティー脆弱性となる可能性があります。
- 逸失シンク: 逸失シンクとは、トレースできなくなった API メソッドのことです。
各ノードは、影響を受けるパッケージを表示するように展開できます。次に、パッケージを展開して、影響を受けるクラス、さらにメソッドを表示できます。これらのメソッドを展開すると、トレースの反対側にあるパッケージ、クラス、およびメソッドを表示できます。例えば、特定のシンクに関心がある場合、Sinks ルートの下のメソッドにドリルダウンすることができます。メソッドに達すると、そのメソッドの下のツリーには、そのシンクに通じるすべてのソースに戻るパスが示されます。
- Sources - packageA - classA - methodA - packageB - classB - methodB (at opposite end of trace) - Sinks - packageB - classB - methodB - packageA - classA - methodA - Lost Sinks
このツリー・ビューでの選択内容によって、ビューの他の 2 つのセクションに表示される内容が決まります。
- 中間ノード (Intermediate nodes): ビューのこのセクションには、「ソースとシンク」セクションでの選択内容に該当するトレースのすべての中間ノードを結合したものが表示されます。ここで、検出結果表に表示される内容を詳細化することができます。
このセクションは、デフォルトでは表示されません。「中間呼び出し表の表示/非表示」をクリックすると、表示したり、再度非表示にしたりすることができます。
1 つのパッケージ、クラス、またはメソッドの検出結果のみを表示するには、その「必要」列のチェック・ボックスを選択します。1 つのパッケージ、クラス、またはメソッドの検出結果をフィルタリングで除外するには、その「削除」列のチェック・ボックスを選択します。このセクションで行ったフィルター設定を使用して、新規フィルターを作成できます。
使用例: 「ソースとシンク」セクションに以下のツリー・ノードがあるとします。
- Sources - java.util - Properties - getProperty
getProperty
が選択された場合、検出結果表には、getProperty
をソースとするトレースを含む検出結果のみが表示されます。この時点で、中間ノード・セクションには、ソースがgetProperty
であるすべてのトレースのすべての中間ノード (トレース内の、ソースおよびシンク以外のノード) が表示されます。ただし、トレースが特定の API を通過するかどうかには関心がないこともあります。例えば、getProperty
からのデータが有効であることを保証する検証ルーチンがあるので、この検証ルーチンを通過するトレースは表示させたくない場合があります。中間ノード・セクションには、この検証ルーチンが含まれます。これがトレースの中間ノードであるためです。中間ノード・セクションで検証ルーチンを参照し、その「削除」チェック・ボックスをクリックします。これにより、検出結果表から、この中間ノードを通過するトレースを含むすべての検出結果が削除されます。 - 検出結果: このセクションには、「検出結果」ビュー および検出結果を含む他のビューにある物と同じ 検出結果表 (および関連アクション) が含まれています。ビューの他の 2 つのセクションで表示対象として選択したソース、シンク、および中間ノードの検出結果が表示されます。